From da6521c41bdc92683bedd243d14653645fcb16d2 Mon Sep 17 00:00:00 2001 From: "github-actions[doc-deploy-bot]" Date: Tue, 14 Jan 2025 16:15:55 +0000 Subject: [PATCH] Removing docs for closed pull request 1961 --- pulls/1961/_modules/dpctl.html | 960 ------ .../_modules/dpctl/_device_selection.html | 917 ------ pulls/1961/_modules/dpctl/_sycl_timer.html | 1107 ------- .../_modules/dpctl/tensor/_array_api.html | 1052 ------- pulls/1961/_modules/dpctl/tensor/_clip.html | 1582 ---------- .../_modules/dpctl/tensor/_copy_utils.html | 1856 ----------- pulls/1961/_modules/dpctl/tensor/_ctors.html | 2763 ----------------- pulls/1961/_modules/dpctl/tensor/_device.html | 1008 ------ .../dpctl/tensor/_indexing_functions.html | 1406 --------- .../tensor/_linear_algebra_functions.html | 1822 ----------- .../dpctl/tensor/_manipulation_functions.html | 1884 ----------- .../_modules/dpctl/tensor/_reduction.html | 1637 ---------- .../1961/_modules/dpctl/tensor/_reshape.html | 1013 ------ .../dpctl/tensor/_search_functions.html | 1222 -------- .../_modules/dpctl/tensor/_searchsorted.html | 976 ------ .../_modules/dpctl/tensor/_set_functions.html | 1445 --------- .../1961/_modules/dpctl/tensor/_sorting.html | 1253 -------- .../dpctl/tensor/_statistical_functions.html | 1186 ------- .../1961/_modules/dpctl/tensor/_testing.html | 971 ------ .../_modules/dpctl/tensor/_type_utils.html | 1800 ----------- .../dpctl/tensor/_utility_functions.html | 1310 -------- .../dpctl/utils/_intel_device_info.html | 932 ------ .../dpctl/utils/_onetrace_context.html | 915 ------ pulls/1961/_modules/index.html | 854 ----- .../dpctl/examples/usm_ndarray.rst.txt | 34 - .../dpctl/filter_selector_string.rst.txt | 54 - .../api_reference/dpctl/flags.rst.txt | 22 - .../dpctl/generated/dpctl.SyclContext.rst.txt | 29 - .../dpctl.SyclContextCreationError.rst.txt | 6 - .../dpctl/generated/dpctl.SyclDevice.rst.txt | 101 - .../dpctl.SyclDeviceCreationError.rst.txt | 6 - .../dpctl/generated/dpctl.SyclEvent.rst.txt | 35 - .../generated/dpctl.SyclPlatform.rst.txt | 32 - .../dpctl/generated/dpctl.SyclQueue.rst.txt | 45 - .../dpctl.SyclQueueCreationError.rst.txt | 6 - .../dpctl.SyclSubDeviceCreationError.rst.txt | 6 - .../dpctl/generated/dpctl.SyclTimer.rst.txt | 28 - .../dpctl/generated/dpctl.get_devices.rst.txt | 6 - .../dpctl/generated/dpctl.get_include.rst.txt | 6 - .../generated/dpctl.get_num_devices.rst.txt | 6 - .../dpctl.has_accelerator_devices.rst.txt | 6 - .../generated/dpctl.has_cpu_devices.rst.txt | 6 - .../generated/dpctl.has_gpu_devices.rst.txt | 6 - .../dpctl/generated/dpctl.lsplatform.rst.txt | 6 - .../dpctl.memory.MemoryUSMDevice.rst.txt | 43 - .../dpctl.memory.MemoryUSMHost.rst.txt | 43 - .../dpctl.memory.MemoryUSMShared.rst.txt | 43 - .../dpctl.memory.USMAllocationError.rst.txt | 6 - .../dpctl.memory.as_usm_memory.rst.txt | 6 - .../dpctl.program.SyclKernel.rst.txt | 39 - .../dpctl.program.SyclProgram.rst.txt | 26 - ...rogram.SyclProgramCompilationError.rst.txt | 6 - ...program.create_program_from_source.rst.txt | 6 - ....program.create_program_from_spirv.rst.txt | 6 - .../dpctl.select_accelerator_device.rst.txt | 6 - .../generated/dpctl.select_cpu_device.rst.txt | 6 - .../dpctl.select_default_device.rst.txt | 6 - .../dpctl.select_device_with_aspects.rst.txt | 6 - .../generated/dpctl.select_gpu_device.rst.txt | 6 - ...dpctl.tensor.__array_api_version__.rst.txt | 14 - ...tl.tensor.__array_namespace_info__.rst.txt | 14 - .../dpctl.tensor._array_api.Info.rst.txt | 25 - .../dpctl/generated/dpctl.tensor.abs.rst.txt | 10 - .../dpctl/generated/dpctl.tensor.acos.rst.txt | 10 - .../generated/dpctl.tensor.acosh.rst.txt | 10 - .../dpctl/generated/dpctl.tensor.add.rst.txt | 10 - .../dpctl/generated/dpctl.tensor.all.rst.txt | 6 - .../generated/dpctl.tensor.allclose.rst.txt | 6 - .../generated/dpctl.tensor.angle.rst.txt | 10 - .../dpctl/generated/dpctl.tensor.any.rst.txt | 6 - .../generated/dpctl.tensor.arange.rst.txt | 6 - .../generated/dpctl.tensor.argmax.rst.txt | 6 - .../generated/dpctl.tensor.argmin.rst.txt | 6 - .../generated/dpctl.tensor.argsort.rst.txt | 6 - .../generated/dpctl.tensor.asarray.rst.txt | 6 - .../dpctl/generated/dpctl.tensor.asin.rst.txt | 10 - .../generated/dpctl.tensor.asinh.rst.txt | 10 - .../generated/dpctl.tensor.astype.rst.txt | 6 - .../dpctl/generated/dpctl.tensor.atan.rst.txt | 10 - .../generated/dpctl.tensor.atan2.rst.txt | 10 - .../generated/dpctl.tensor.atanh.rst.txt | 10 - .../dpctl.tensor.bitwise_and.rst.txt | 10 - .../dpctl.tensor.bitwise_invert.rst.txt | 10 - .../dpctl.tensor.bitwise_left_shift.rst.txt | 10 - .../generated/dpctl.tensor.bitwise_or.rst.txt | 10 - .../dpctl.tensor.bitwise_right_shift.rst.txt | 10 - .../dpctl.tensor.bitwise_xor.rst.txt | 10 - .../dpctl.tensor.broadcast_arrays.rst.txt | 6 - .../dpctl.tensor.broadcast_to.rst.txt | 6 - .../generated/dpctl.tensor.can_cast.rst.txt | 6 - .../dpctl/generated/dpctl.tensor.cbrt.rst.txt | 10 - .../dpctl/generated/dpctl.tensor.ceil.rst.txt | 10 - .../dpctl/generated/dpctl.tensor.clip.rst.txt | 9 - .../generated/dpctl.tensor.concat.rst.txt | 6 - .../dpctl/generated/dpctl.tensor.conj.rst.txt | 10 - .../dpctl/generated/dpctl.tensor.copy.rst.txt | 6 - .../generated/dpctl.tensor.copysign.rst.txt | 10 - .../dpctl/generated/dpctl.tensor.cos.rst.txt | 10 - .../dpctl/generated/dpctl.tensor.cosh.rst.txt | 10 - .../dpctl.tensor.count_nonzero.rst.txt | 6 - .../dpctl/generated/dpctl.tensor.diff.rst.txt | 6 - .../generated/dpctl.tensor.divide.rst.txt | 10 - .../generated/dpctl.tensor.empty.rst.txt | 6 - .../generated/dpctl.tensor.empty_like.rst.txt | 6 - .../generated/dpctl.tensor.equal.rst.txt | 10 - .../dpctl/generated/dpctl.tensor.exp.rst.txt | 10 - .../dpctl/generated/dpctl.tensor.exp2.rst.txt | 10 - .../dpctl.tensor.expand_dims.rst.txt | 6 - .../generated/dpctl.tensor.expm1.rst.txt | 10 - .../generated/dpctl.tensor.extract.rst.txt | 6 - .../dpctl/generated/dpctl.tensor.eye.rst.txt | 6 - .../generated/dpctl.tensor.finfo.rst.txt | 6 - .../dpctl/generated/dpctl.tensor.flip.rst.txt | 6 - .../generated/dpctl.tensor.floor.rst.txt | 10 - .../dpctl.tensor.floor_divide.rst.txt | 10 - .../dpctl.tensor.from_dlpack.rst.txt | 6 - .../generated/dpctl.tensor.from_numpy.rst.txt | 6 - .../dpctl/generated/dpctl.tensor.full.rst.txt | 6 - .../generated/dpctl.tensor.full_like.rst.txt | 6 - .../generated/dpctl.tensor.greater.rst.txt | 10 - .../dpctl.tensor.greater_equal.rst.txt | 10 - .../generated/dpctl.tensor.hypot.rst.txt | 10 - .../generated/dpctl.tensor.iinfo.rst.txt | 6 - .../dpctl/generated/dpctl.tensor.imag.rst.txt | 10 - .../generated/dpctl.tensor.isdtype.rst.txt | 6 - .../generated/dpctl.tensor.isfinite.rst.txt | 10 - .../generated/dpctl.tensor.isinf.rst.txt | 10 - .../generated/dpctl.tensor.isnan.rst.txt | 10 - .../dpctl/generated/dpctl.tensor.less.rst.txt | 10 - .../generated/dpctl.tensor.less_equal.rst.txt | 10 - .../generated/dpctl.tensor.linspace.rst.txt | 6 - .../dpctl/generated/dpctl.tensor.log.rst.txt | 10 - .../generated/dpctl.tensor.log10.rst.txt | 10 - .../generated/dpctl.tensor.log1p.rst.txt | 10 - .../dpctl/generated/dpctl.tensor.log2.rst.txt | 10 - .../generated/dpctl.tensor.logaddexp.rst.txt | 10 - .../dpctl.tensor.logical_and.rst.txt | 10 - .../dpctl.tensor.logical_not.rst.txt | 10 - .../generated/dpctl.tensor.logical_or.rst.txt | 10 - .../dpctl.tensor.logical_xor.rst.txt | 10 - .../generated/dpctl.tensor.logsumexp.rst.txt | 6 - .../generated/dpctl.tensor.matmul.rst.txt | 6 - .../dpctl.tensor.matrix_transpose.rst.txt | 6 - .../dpctl/generated/dpctl.tensor.max.rst.txt | 6 - .../generated/dpctl.tensor.maximum.rst.txt | 10 - .../dpctl/generated/dpctl.tensor.mean.rst.txt | 6 - .../generated/dpctl.tensor.meshgrid.rst.txt | 6 - .../dpctl/generated/dpctl.tensor.min.rst.txt | 6 - .../generated/dpctl.tensor.minimum.rst.txt | 10 - .../generated/dpctl.tensor.moveaxis.rst.txt | 6 - .../generated/dpctl.tensor.multiply.rst.txt | 10 - .../generated/dpctl.tensor.negative.rst.txt | 10 - .../generated/dpctl.tensor.nextafter.rst.txt | 10 - .../generated/dpctl.tensor.nonzero.rst.txt | 6 - .../generated/dpctl.tensor.not_equal.rst.txt | 10 - .../dpctl/generated/dpctl.tensor.ones.rst.txt | 6 - .../generated/dpctl.tensor.ones_like.rst.txt | 6 - .../dpctl.tensor.permute_dims.rst.txt | 6 - .../generated/dpctl.tensor.place.rst.txt | 6 - .../generated/dpctl.tensor.positive.rst.txt | 10 - .../dpctl/generated/dpctl.tensor.pow.rst.txt | 10 - .../dpctl/generated/dpctl.tensor.prod.rst.txt | 6 - .../dpctl/generated/dpctl.tensor.put.rst.txt | 6 - .../dpctl.tensor.put_along_axis.rst.txt | 6 - .../dpctl/generated/dpctl.tensor.real.rst.txt | 10 - .../generated/dpctl.tensor.reciprocal.rst.txt | 10 - .../dpctl.tensor.reduce_hypot.rst.txt | 6 - .../generated/dpctl.tensor.remainder.rst.txt | 10 - .../generated/dpctl.tensor.repeat.rst.txt | 6 - .../generated/dpctl.tensor.reshape.rst.txt | 6 - .../dpctl.tensor.result_type.rst.txt | 6 - .../dpctl/generated/dpctl.tensor.roll.rst.txt | 6 - .../generated/dpctl.tensor.round.rst.txt | 10 - .../generated/dpctl.tensor.rsqrt.rst.txt | 10 - .../dpctl.tensor.searchsorted.rst.txt | 6 - .../dpctl/generated/dpctl.tensor.sign.rst.txt | 10 - .../generated/dpctl.tensor.signbit.rst.txt | 10 - .../dpctl/generated/dpctl.tensor.sin.rst.txt | 10 - .../dpctl/generated/dpctl.tensor.sinh.rst.txt | 10 - .../dpctl/generated/dpctl.tensor.sort.rst.txt | 6 - .../dpctl/generated/dpctl.tensor.sqrt.rst.txt | 10 - .../generated/dpctl.tensor.square.rst.txt | 10 - .../generated/dpctl.tensor.squeeze.rst.txt | 6 - .../generated/dpctl.tensor.stack.rst.txt | 6 - .../dpctl/generated/dpctl.tensor.std.rst.txt | 6 - .../generated/dpctl.tensor.subtract.rst.txt | 10 - .../dpctl/generated/dpctl.tensor.sum.rst.txt | 6 - .../dpctl/generated/dpctl.tensor.take.rst.txt | 6 - .../dpctl.tensor.take_along_axis.rst.txt | 6 - .../dpctl/generated/dpctl.tensor.tan.rst.txt | 10 - .../dpctl/generated/dpctl.tensor.tanh.rst.txt | 10 - .../generated/dpctl.tensor.tensordot.rst.txt | 6 - .../dpctl/generated/dpctl.tensor.tile.rst.txt | 6 - .../generated/dpctl.tensor.top_k.rst.txt | 6 - .../dpctl/generated/dpctl.tensor.tril.rst.txt | 6 - .../dpctl/generated/dpctl.tensor.triu.rst.txt | 6 - .../generated/dpctl.tensor.trunc.rst.txt | 10 - .../generated/dpctl.tensor.unique_all.rst.txt | 6 - .../dpctl.tensor.unique_counts.rst.txt | 6 - .../dpctl.tensor.unique_inverse.rst.txt | 6 - .../dpctl.tensor.unique_values.rst.txt | 6 - .../generated/dpctl.tensor.unstack.rst.txt | 6 - .../dpctl.tensor.usm_ndarray.rst.txt | 61 - .../dpctl/generated/dpctl.tensor.var.rst.txt | 6 - .../generated/dpctl.tensor.vecdot.rst.txt | 6 - .../generated/dpctl.tensor.where.rst.txt | 6 - .../generated/dpctl.tensor.zeros.rst.txt | 6 - .../generated/dpctl.tensor.zeros_like.rst.txt | 6 - .../dpctl.SyclContext.addressof_ref.rst.txt | 6 - .../dpctl.SyclContext.device_count.rst.txt | 6 - .../dpctl.SyclContext.get_devices.rst.txt | 6 - .../dpctl.SyclDevice.addressof_ref.rst.txt | 6 - .../dpctl.SyclDevice.backend.rst.txt | 6 - ...pctl.SyclDevice.create_sub_devices.rst.txt | 6 - ....SyclDevice.default_selector_score.rst.txt | 6 - .../dpctl.SyclDevice.device_type.rst.txt | 6 - .../dpctl.SyclDevice.driver_version.rst.txt | 6 - .../dpctl.SyclDevice.filter_string.rst.txt | 6 - ...dpctl.SyclDevice.get_filter_string.rst.txt | 6 - ...lDevice.global_mem_cache_line_size.rst.txt | 6 - ...l.SyclDevice.global_mem_cache_size.rst.txt | 6 - ...l.SyclDevice.global_mem_cache_type.rst.txt | 6 - .../dpctl.SyclDevice.global_mem_size.rst.txt | 6 - ....SyclDevice.has_aspect_accelerator.rst.txt | 6 - ...ctl.SyclDevice.has_aspect_atomic64.rst.txt | 6 - .../dpctl.SyclDevice.has_aspect_cpu.rst.txt | 6 - ...dpctl.SyclDevice.has_aspect_custom.rst.txt | 6 - ...ctl.SyclDevice.has_aspect_emulated.rst.txt | 6 - .../dpctl.SyclDevice.has_aspect_fp16.rst.txt | 6 - .../dpctl.SyclDevice.has_aspect_fp64.rst.txt | 6 - .../dpctl.SyclDevice.has_aspect_gpu.rst.txt | 6 - ...lDevice.has_aspect_host_debuggable.rst.txt | 6 - .../dpctl.SyclDevice.has_aspect_image.rst.txt | 6 - ...lDevice.has_aspect_online_compiler.rst.txt | 6 - ...yclDevice.has_aspect_online_linker.rst.txt | 6 - ...lDevice.has_aspect_queue_profiling.rst.txt | 6 - ...aspect_usm_atomic_host_allocations.rst.txt | 6 - ...pect_usm_atomic_shared_allocations.rst.txt | 6 - ....has_aspect_usm_device_allocations.rst.txt | 6 - ...ce.has_aspect_usm_host_allocations.rst.txt | 6 - ....has_aspect_usm_shared_allocations.rst.txt | 6 - ....has_aspect_usm_system_allocations.rst.txt | 6 - ...ctl.SyclDevice.image_2d_max_height.rst.txt | 6 - ...pctl.SyclDevice.image_2d_max_width.rst.txt | 6 - ...pctl.SyclDevice.image_3d_max_depth.rst.txt | 6 - ...ctl.SyclDevice.image_3d_max_height.rst.txt | 6 - ...pctl.SyclDevice.image_3d_max_width.rst.txt | 6 - .../dpctl.SyclDevice.is_accelerator.rst.txt | 6 - .../generated/dpctl.SyclDevice.is_cpu.rst.txt | 6 - .../generated/dpctl.SyclDevice.is_gpu.rst.txt | 6 - .../dpctl.SyclDevice.local_mem_size.rst.txt | 6 - ...ctl.SyclDevice.max_clock_frequency.rst.txt | 6 - ...dpctl.SyclDevice.max_compute_units.rst.txt | 6 - ...pctl.SyclDevice.max_mem_alloc_size.rst.txt | 6 - ...pctl.SyclDevice.max_num_sub_groups.rst.txt | 6 - ...ctl.SyclDevice.max_read_image_args.rst.txt | 6 - ...ctl.SyclDevice.max_work_group_size.rst.txt | 6 - ...pctl.SyclDevice.max_work_item_dims.rst.txt | 6 - ...ctl.SyclDevice.max_work_item_sizes.rst.txt | 6 - ...l.SyclDevice.max_work_item_sizes1d.rst.txt | 6 - ...l.SyclDevice.max_work_item_sizes2d.rst.txt | 6 - ...l.SyclDevice.max_work_item_sizes3d.rst.txt | 6 - ...tl.SyclDevice.max_write_image_args.rst.txt | 6 - .../generated/dpctl.SyclDevice.name.rst.txt | 6 - ...yclDevice.native_vector_width_char.rst.txt | 6 - ...lDevice.native_vector_width_double.rst.txt | 6 - ...clDevice.native_vector_width_float.rst.txt | 6 - ...yclDevice.native_vector_width_half.rst.txt | 6 - ...SyclDevice.native_vector_width_int.rst.txt | 6 - ...yclDevice.native_vector_width_long.rst.txt | 6 - ...clDevice.native_vector_width_short.rst.txt | 6 - .../dpctl.SyclDevice.parent_device.rst.txt | 6 - ...clDevice.partition_max_sub_devices.rst.txt | 6 - ...Device.preferred_vector_width_char.rst.txt | 6 - ...vice.preferred_vector_width_double.rst.txt | 6 - ...evice.preferred_vector_width_float.rst.txt | 6 - ...Device.preferred_vector_width_half.rst.txt | 6 - ...lDevice.preferred_vector_width_int.rst.txt | 6 - ...Device.preferred_vector_width_long.rst.txt | 6 - ...evice.preferred_vector_width_short.rst.txt | 6 - ...dpctl.SyclDevice.print_device_info.rst.txt | 6 - ...lDevice.profiling_timer_resolution.rst.txt | 6 - ...group_independent_forward_progress.rst.txt | 6 - .../dpctl.SyclDevice.sub_group_sizes.rst.txt | 6 - .../dpctl.SyclDevice.sycl_platform.rst.txt | 6 - .../generated/dpctl.SyclDevice.vendor.rst.txt | 6 - .../dpctl.SyclEvent.addressof_ref.rst.txt | 6 - .../generated/dpctl.SyclEvent.backend.rst.txt | 6 - .../dpctl.SyclEvent.execution_status.rst.txt | 6 - .../dpctl.SyclEvent.get_wait_list.rst.txt | 6 - ...dpctl.SyclEvent.profiling_info_end.rst.txt | 6 - ...ctl.SyclEvent.profiling_info_start.rst.txt | 6 - ...tl.SyclEvent.profiling_info_submit.rst.txt | 6 - .../generated/dpctl.SyclEvent.wait.rst.txt | 6 - .../dpctl.SyclEvent.wait_for.rst.txt | 6 - .../dpctl.SyclPlatform.backend.rst.txt | 6 - ...dpctl.SyclPlatform.default_context.rst.txt | 6 - .../generated/dpctl.SyclPlatform.name.rst.txt | 6 - ...l.SyclPlatform.print_platform_info.rst.txt | 6 - .../dpctl.SyclPlatform.vendor.rst.txt | 6 - .../dpctl.SyclPlatform.version.rst.txt | 6 - .../dpctl.SyclQueue.addressof_ref.rst.txt | 6 - .../generated/dpctl.SyclQueue.backend.rst.txt | 6 - .../dpctl.SyclQueue.driver_version.rst.txt | 6 - .../dpctl.SyclQueue.get_sycl_context.rst.txt | 6 - .../dpctl.SyclQueue.get_sycl_device.rst.txt | 6 - ...ctl.SyclQueue.has_enable_profiling.rst.txt | 6 - .../dpctl.SyclQueue.is_in_order.rst.txt | 6 - .../dpctl.SyclQueue.mem_advise.rst.txt | 6 - .../generated/dpctl.SyclQueue.memcpy.rst.txt | 6 - .../dpctl.SyclQueue.memcpy_async.rst.txt | 6 - .../generated/dpctl.SyclQueue.name.rst.txt | 6 - .../dpctl.SyclQueue.prefetch.rst.txt | 6 - .../dpctl.SyclQueue.print_device_info.rst.txt | 6 - .../generated/dpctl.SyclQueue.submit.rst.txt | 6 - .../dpctl.SyclQueue.submit_async.rst.txt | 6 - .../dpctl.SyclQueue.submit_barrier.rst.txt | 6 - .../dpctl.SyclQueue.sycl_context.rst.txt | 6 - .../dpctl.SyclQueue.sycl_device.rst.txt | 6 - .../generated/dpctl.SyclQueue.wait.rst.txt | 6 - .../dpctl.SyclTimer.__init__.rst.txt | 6 - .../generated/dpctl.SyclTimer.dt.rst.txt | 6 - ...evice.__sycl_usm_array_interface__.rst.txt | 6 - ...y.MemoryUSMDevice.copy_from_device.rst.txt | 6 - ...ory.MemoryUSMDevice.copy_from_host.rst.txt | 6 - ...emory.MemoryUSMDevice.copy_to_host.rst.txt | 6 - ...emory.MemoryUSMDevice.get_usm_type.rst.txt | 6 - ....MemoryUSMDevice.get_usm_type_enum.rst.txt | 6 - ...pctl.memory.MemoryUSMDevice.memset.rst.txt | 6 - ...pctl.memory.MemoryUSMDevice.nbytes.rst.txt | 6 - ...mory.MemoryUSMDevice.reference_obj.rst.txt | 6 - .../dpctl.memory.MemoryUSMDevice.size.rst.txt | 6 - ...emory.MemoryUSMDevice.sycl_context.rst.txt | 6 - ...memory.MemoryUSMDevice.sycl_device.rst.txt | 6 - ....memory.MemoryUSMDevice.sycl_queue.rst.txt | 6 - ...ctl.memory.MemoryUSMDevice.tobytes.rst.txt | 6 - ...MHost.__sycl_usm_array_interface__.rst.txt | 6 - ...ory.MemoryUSMHost.copy_from_device.rst.txt | 6 - ...emory.MemoryUSMHost.copy_from_host.rst.txt | 6 - ....memory.MemoryUSMHost.copy_to_host.rst.txt | 6 - ....memory.MemoryUSMHost.get_usm_type.rst.txt | 6 - ...ry.MemoryUSMHost.get_usm_type_enum.rst.txt | 6 - .../dpctl.memory.MemoryUSMHost.memset.rst.txt | 6 - .../dpctl.memory.MemoryUSMHost.nbytes.rst.txt | 6 - ...memory.MemoryUSMHost.reference_obj.rst.txt | 6 - .../dpctl.memory.MemoryUSMHost.size.rst.txt | 6 - ....memory.MemoryUSMHost.sycl_context.rst.txt | 6 - ...l.memory.MemoryUSMHost.sycl_device.rst.txt | 6 - ...tl.memory.MemoryUSMHost.sycl_queue.rst.txt | 6 - ...dpctl.memory.MemoryUSMHost.tobytes.rst.txt | 6 - ...hared.__sycl_usm_array_interface__.rst.txt | 6 - ...y.MemoryUSMShared.copy_from_device.rst.txt | 6 - ...ory.MemoryUSMShared.copy_from_host.rst.txt | 6 - ...emory.MemoryUSMShared.copy_to_host.rst.txt | 6 - ...emory.MemoryUSMShared.get_usm_type.rst.txt | 6 - ....MemoryUSMShared.get_usm_type_enum.rst.txt | 6 - ...pctl.memory.MemoryUSMShared.memset.rst.txt | 6 - ...pctl.memory.MemoryUSMShared.nbytes.rst.txt | 6 - ...mory.MemoryUSMShared.reference_obj.rst.txt | 6 - .../dpctl.memory.MemoryUSMShared.size.rst.txt | 6 - ...emory.MemoryUSMShared.sycl_context.rst.txt | 6 - ...memory.MemoryUSMShared.sycl_device.rst.txt | 6 - ....memory.MemoryUSMShared.sycl_queue.rst.txt | 6 - ...ctl.memory.MemoryUSMShared.tobytes.rst.txt | 6 - ...ensor._array_api.Info.capabilities.rst.txt | 6 - ...sor._array_api.Info.default_device.rst.txt | 6 - ...sor._array_api.Info.default_dtypes.rst.txt | 6 - ...ctl.tensor._array_api.Info.devices.rst.txt | 6 - ...pctl.tensor._array_api.Info.dtypes.rst.txt | 6 - .../dpctl.tensor.usm_ndarray.T.rst.txt | 6 - ...pctl.tensor.usm_ndarray.__dlpack__.rst.txt | 6 - ...nsor.usm_ndarray.__dlpack_device__.rst.txt | 6 - ...array.__sycl_usm_array_interface__.rst.txt | 6 - ...tl.tensor.usm_ndarray._byte_bounds.rst.txt | 6 - ...tensor.usm_ndarray._element_offset.rst.txt | 6 - .../dpctl.tensor.usm_ndarray._pointer.rst.txt | 6 - .../dpctl.tensor.usm_ndarray.device.rst.txt | 6 - .../dpctl.tensor.usm_ndarray.dtype.rst.txt | 6 - .../dpctl.tensor.usm_ndarray.flags.rst.txt | 6 - .../dpctl.tensor.usm_ndarray.imag.rst.txt | 6 - .../dpctl.tensor.usm_ndarray.itemsize.rst.txt | 6 - .../dpctl.tensor.usm_ndarray.mT.rst.txt | 6 - .../dpctl.tensor.usm_ndarray.nbytes.rst.txt | 6 - .../dpctl.tensor.usm_ndarray.ndim.rst.txt | 6 - .../dpctl.tensor.usm_ndarray.real.rst.txt | 6 - .../dpctl.tensor.usm_ndarray.shape.rst.txt | 6 - .../dpctl.tensor.usm_ndarray.size.rst.txt | 6 - .../dpctl.tensor.usm_ndarray.strides.rst.txt | 6 - ...tl.tensor.usm_ndarray.sycl_context.rst.txt | 6 - ...ctl.tensor.usm_ndarray.sycl_device.rst.txt | 6 - ...pctl.tensor.usm_ndarray.sycl_queue.rst.txt | 6 - ...dpctl.tensor.usm_ndarray.to_device.rst.txt | 6 - .../dpctl.tensor.usm_ndarray.usm_data.rst.txt | 6 - .../dpctl.tensor.usm_ndarray.usm_type.rst.txt | 6 - .../api_reference/dpctl/index.rst.txt | 86 - .../api_reference/dpctl/memory.rst.txt | 72 - .../api_reference/dpctl/program.rst.txt | 37 - .../dpctl/sycl_usm_array_interface.rst.txt | 66 - .../dpctl/tensor.constants.rst.txt | 35 - .../dpctl/tensor.creation_functions.rst.txt | 31 - .../dpctl/tensor.data_type_functions.rst.txt | 21 - .../dpctl/tensor.data_types.rst.txt | 129 - .../tensor.elementwise_functions.rst.txt | 85 - .../dpctl/tensor.indexing_functions.rst.txt | 19 - .../dpctl/tensor.inspection.rst.txt | 21 - .../dpctl/tensor.linear_algebra.rst.txt | 14 - .../tensor.manipulation_functions.rst.txt | 28 - .../api_reference/dpctl/tensor.rst.txt | 52 - .../dpctl/tensor.searching_functions.rst.txt | 16 - .../dpctl/tensor.set_functions.rst.txt | 14 - .../dpctl/tensor.sorting_functions.rst.txt | 13 - .../tensor.statistical_functions.rst.txt | 19 - .../dpctl/tensor.usm_ndarray.rst.txt | 30 - .../dpctl/tensor.utility_functions.rst.txt | 25 - .../api_reference/dpctl/utils.rst.txt | 20 - .../_sources/api_reference/dpctl_capi.rst.txt | 309 -- .../api_reference/dpctl_cmake.rst.txt | 31 - .../api_reference/dpctl_cython.rst.txt | 42 - .../api_reference/dpctl_pybind11.rst.txt | 47 - .../1961/_sources/api_reference/index.rst.txt | 43 - ...terface_dpctl_accelerator_selector.rst.txt | 44 - ...l_syclinterface_dpctl_cpu_selector.rst.txt | 44 - ...clinterface_dpctl_default_selector.rst.txt | 44 - ...yclinterface_dpctl_device_selector.rst.txt | 38 - ...yclinterface_dpctl_filter_selector.rst.txt | 48 - ...l_syclinterface_dpctl_gpu_selector.rst.txt | 44 - .../enum_DPCTLGlobalMemCacheType.rst.txt | 21 - .../generated/enum_DPCTLKernelArgType.rst.txt | 42 - ...m_DPCTLPartitionAffinityDomainType.rst.txt | 24 - .../enum_DPCTLQueuePropertyType.rst.txt | 20 - .../enum_DPCTLSyclAspectType.rst.txt | 37 - .../enum_DPCTLSyclBackendType.rst.txt | 23 - .../enum_DPCTLSyclDeviceType.rst.txt | 24 - .../enum_DPCTLSyclEventStatusType.rst.txt | 21 - .../generated/enum_DPCTLSyclUSMType.rst.txt | 21 - .../libsyclinterface/generated/global.rst.txt | 919 ------ .../generated/group_DeviceManager.rst.txt | 11 - .../generated/group_PlatformManager.rst.txt | 11 - .../libsyclinterface/generated/index.rst.txt | 35 - .../generated/namespace_dpctl.rst.txt | 25 - .../namespace_dpctl_syclinterface.rst.txt | 35 - .../generated/page_todo.rst.txt | 28 - .../struct_MDLocalAccessorTy.rst.txt | 27 - .../libsyclinterface/index.rst.txt | 15 - .../_sources/beginners_guides/index.rst.txt | 47 - .../beginners_guides/installation.rst.txt | 216 -- .../beginners_guides/managing_devices.rst.txt | 355 --- .../_sources/beginners_guides/misc.rst.txt | 69 - .../beginners_guides/tensor_intro.rst.txt | 287 -- .../contributor_guides/building.rst.txt | 232 -- .../_sources/contributor_guides/index.rst.txt | 17 - .../memory_ownership_sycl_interface.rst.txt | 69 - pulls/1961/_sources/index.rst.txt | 89 - pulls/1961/_sources/license.rst.txt | 31 - .../user_guides/basic_concepts.rst.txt | 244 -- .../1961/_sources/user_guides/dlpack.rst.txt | 140 - .../user_guides/environment_variables.rst.txt | 52 - .../user_guides/execution_model.rst.txt | 232 -- pulls/1961/_sources/user_guides/index.rst.txt | 58 - .../1961/_sphinx_design_static/design-tabs.js | 101 - .../sphinx-design.min.css | 1 - pulls/1961/_static/basic.css | 921 ------ pulls/1961/_static/check-solid.svg | 4 - pulls/1961/_static/clipboard.min.js | 7 - pulls/1961/_static/copy-button.svg | 5 - pulls/1961/_static/copybutton.css | 94 - pulls/1961/_static/copybutton.js | 248 -- pulls/1961/_static/copybutton_funcs.js | 73 - pulls/1961/_static/debug.css | 69 - pulls/1961/_static/design-tabs.js | 101 - pulls/1961/_static/doctools.js | 156 - pulls/1961/_static/documentation_options.js | 14 - pulls/1961/_static/doxyrest-pygments.css | 21 - pulls/1961/_static/dpctl.svg | 263 -- pulls/1961/_static/file.png | Bin 286 -> 0 bytes pulls/1961/_static/language_data.js | 199 -- pulls/1961/_static/minus.png | Bin 90 -> 0 bytes pulls/1961/_static/plus.png | Bin 90 -> 0 bytes pulls/1961/_static/pygments.css | 249 -- pulls/1961/_static/scripts/furo-extensions.js | 0 pulls/1961/_static/scripts/furo.js | 3 - .../1961/_static/scripts/furo.js.LICENSE.txt | 7 - pulls/1961/_static/scripts/furo.js.map | 1 - pulls/1961/_static/searchtools.js | 566 ---- pulls/1961/_static/skeleton.css | 296 -- pulls/1961/_static/sphinx-design.min.css | 1 - pulls/1961/_static/sphinx_highlight.js | 144 - pulls/1961/_static/styles/furo-extensions.css | 2 - .../_static/styles/furo-extensions.css.map | 1 - pulls/1961/_static/styles/furo.css | 2 - pulls/1961/_static/styles/furo.css.map | 1 - pulls/1961/_static/target-highlight.js | 68 - .../dpctl/examples/usm_ndarray.html | 859 ----- .../dpctl/filter_selector_string.html | 894 ------ pulls/1961/api_reference/dpctl/flags.html | 956 ------ .../dpctl/generated/dpctl.SyclContext.html | 989 ------ .../dpctl.SyclContextCreationError.html | 872 ------ .../dpctl/generated/dpctl.SyclDevice.html | 1161 ------- .../dpctl.SyclDeviceCreationError.html | 872 ------ .../dpctl/generated/dpctl.SyclEvent.html | 950 ------ .../dpctl/generated/dpctl.SyclPlatform.html | 936 ------ .../dpctl/generated/dpctl.SyclQueue.html | 1050 ------- .../dpctl.SyclQueueCreationError.html | 874 ------ .../dpctl.SyclSubDeviceCreationError.html | 874 ------ .../dpctl/generated/dpctl.SyclTimer.html | 976 ------ .../dpctl/generated/dpctl.get_devices.html | 897 ------ .../dpctl/generated/dpctl.get_include.html | 873 ------ .../generated/dpctl.get_num_devices.html | 894 ------ .../dpctl.has_accelerator_devices.html | 881 ------ .../generated/dpctl.has_cpu_devices.html | 880 ------ .../generated/dpctl.has_gpu_devices.html | 880 ------ .../dpctl/generated/dpctl.lsplatform.html | 936 ------ .../dpctl.memory.MemoryUSMDevice.html | 947 ------ .../generated/dpctl.memory.MemoryUSMHost.html | 947 ------ .../dpctl.memory.MemoryUSMShared.html | 947 ------ .../dpctl.memory.USMAllocationError.html | 879 ------ .../generated/dpctl.memory.as_usm_memory.html | 885 ------ .../generated/dpctl.program.SyclKernel.html | 920 ------ .../generated/dpctl.program.SyclProgram.html | 895 ------ ...l.program.SyclProgramCompilationError.html | 872 ------ ...tl.program.create_program_from_source.html | 898 ------ ...ctl.program.create_program_from_spirv.html | 897 ------ .../dpctl.select_accelerator_device.html | 884 ------ .../generated/dpctl.select_cpu_device.html | 884 ------ .../dpctl.select_default_device.html | 884 ------ .../dpctl.select_device_with_aspects.html | 890 ------ .../generated/dpctl.select_gpu_device.html | 884 ------ .../dpctl.tensor.__array_api_version__.html | 871 ------ ...dpctl.tensor.__array_namespace_info__.html | 871 ------ .../dpctl.tensor._array_api.Info.html | 893 ------ .../dpctl/generated/dpctl.tensor.abs.html | 895 ------ .../dpctl/generated/dpctl.tensor.acos.html | 892 ------ .../dpctl/generated/dpctl.tensor.acosh.html | 892 ------ .../dpctl/generated/dpctl.tensor.add.html | 893 ------ .../dpctl/generated/dpctl.tensor.all.html | 897 ------ .../generated/dpctl.tensor.allclose.html | 875 ------ .../dpctl/generated/dpctl.tensor.angle.html | 893 ------ .../dpctl/generated/dpctl.tensor.any.html | 897 ------ .../dpctl/generated/dpctl.tensor.arange.html | 904 ------ .../dpctl/generated/dpctl.tensor.argmax.html | 902 ------ .../dpctl/generated/dpctl.tensor.argmin.html | 902 ------ .../dpctl/generated/dpctl.tensor.argsort.html | 898 ------ .../dpctl/generated/dpctl.tensor.asarray.html | 915 ------ .../dpctl/generated/dpctl.tensor.asin.html | 892 ------ .../dpctl/generated/dpctl.tensor.asinh.html | 892 ------ .../dpctl/generated/dpctl.tensor.astype.html | 904 ------ .../dpctl/generated/dpctl.tensor.atan.html | 892 ------ .../dpctl/generated/dpctl.tensor.atan2.html | 897 ------ .../dpctl/generated/dpctl.tensor.atanh.html | 892 ------ .../generated/dpctl.tensor.bitwise_and.html | 895 ------ .../dpctl.tensor.bitwise_invert.html | 892 ------ .../dpctl.tensor.bitwise_left_shift.html | 895 ------ .../generated/dpctl.tensor.bitwise_or.html | 895 ------ .../dpctl.tensor.bitwise_right_shift.html | 894 ------ .../generated/dpctl.tensor.bitwise_xor.html | 895 ------ .../dpctl.tensor.broadcast_arrays.html | 887 ------ .../generated/dpctl.tensor.broadcast_to.html | 890 ------ .../generated/dpctl.tensor.can_cast.html | 900 ------ .../dpctl/generated/dpctl.tensor.cbrt.html | 892 ------ .../dpctl/generated/dpctl.tensor.ceil.html | 891 ------ .../dpctl/generated/dpctl.tensor.clip.html | 899 ------ .../dpctl/generated/dpctl.tensor.concat.html | 896 ------ .../dpctl/generated/dpctl.tensor.conj.html | 890 ------ .../dpctl/generated/dpctl.tensor.copy.html | 907 ------ .../generated/dpctl.tensor.copysign.html | 894 ------ .../dpctl/generated/dpctl.tensor.cos.html | 891 ------ .../dpctl/generated/dpctl.tensor.cosh.html | 891 ------ .../generated/dpctl.tensor.count_nonzero.html | 901 ------ .../dpctl/generated/dpctl.tensor.diff.html | 905 ------ .../dpctl/generated/dpctl.tensor.divide.html | 893 ------ .../dpctl/generated/dpctl.tensor.empty.html | 906 ------ .../generated/dpctl.tensor.empty_like.html | 905 ------ .../dpctl/generated/dpctl.tensor.equal.html | 893 ------ .../dpctl/generated/dpctl.tensor.exp.html | 892 ------ .../dpctl/generated/dpctl.tensor.exp2.html | 892 ------ .../generated/dpctl.tensor.expand_dims.html | 901 ------ .../dpctl/generated/dpctl.tensor.expm1.html | 893 ------ .../dpctl/generated/dpctl.tensor.extract.html | 891 ------ .../dpctl/generated/dpctl.tensor.eye.html | 912 ------ .../dpctl/generated/dpctl.tensor.finfo.html | 923 ------ .../dpctl/generated/dpctl.tensor.flip.html | 891 ------ .../dpctl/generated/dpctl.tensor.floor.html | 891 ------ .../generated/dpctl.tensor.floor_divide.html | 896 ------ .../generated/dpctl.tensor.from_dlpack.html | 989 ------ .../generated/dpctl.tensor.from_numpy.html | 901 ------ .../dpctl/generated/dpctl.tensor.full.html | 906 ------ .../generated/dpctl.tensor.full_like.html | 908 ------ .../dpctl/generated/dpctl.tensor.greater.html | 893 ------ .../generated/dpctl.tensor.greater_equal.html | 894 ------ .../dpctl/generated/dpctl.tensor.hypot.html | 895 ------ .../dpctl/generated/dpctl.tensor.iinfo.html | 906 ------ .../dpctl/generated/dpctl.tensor.imag.html | 894 ------ .../dpctl/generated/dpctl.tensor.isdtype.html | 874 ------ .../generated/dpctl.tensor.isfinite.html | 892 ------ .../dpctl/generated/dpctl.tensor.isinf.html | 891 ------ .../dpctl/generated/dpctl.tensor.isnan.html | 891 ------ .../dpctl/generated/dpctl.tensor.less.html | 893 ------ .../generated/dpctl.tensor.less_equal.html | 893 ------ .../generated/dpctl.tensor.linspace.html | 918 ------ .../dpctl/generated/dpctl.tensor.log.html | 892 ------ .../dpctl/generated/dpctl.tensor.log10.html | 892 ------ .../dpctl/generated/dpctl.tensor.log1p.html | 893 ------ .../dpctl/generated/dpctl.tensor.log2.html | 892 ------ .../generated/dpctl.tensor.logaddexp.html | 898 ------ .../generated/dpctl.tensor.logical_and.html | 892 ------ .../generated/dpctl.tensor.logical_not.html | 890 ------ .../generated/dpctl.tensor.logical_or.html | 892 ------ .../generated/dpctl.tensor.logical_xor.html | 892 ------ .../generated/dpctl.tensor.logsumexp.html | 917 ------ .../dpctl/generated/dpctl.tensor.matmul.html | 937 ------ .../dpctl.tensor.matrix_transpose.html | 885 ------ .../dpctl/generated/dpctl.tensor.max.html | 899 ------ .../dpctl/generated/dpctl.tensor.maximum.html | 893 ------ .../dpctl/generated/dpctl.tensor.mean.html | 900 ------ .../generated/dpctl.tensor.meshgrid.html | 903 ------ .../dpctl/generated/dpctl.tensor.min.html | 899 ------ .../dpctl/generated/dpctl.tensor.minimum.html | 893 ------ .../generated/dpctl.tensor.moveaxis.html | 901 ------ .../generated/dpctl.tensor.multiply.html | 893 ------ .../generated/dpctl.tensor.negative.html | 890 ------ .../generated/dpctl.tensor.nextafter.html | 894 ------ .../dpctl/generated/dpctl.tensor.nonzero.html | 886 ------ .../generated/dpctl.tensor.not_equal.html | 893 ------ .../dpctl/generated/dpctl.tensor.ones.html | 905 ------ .../generated/dpctl.tensor.ones_like.html | 905 ------ .../generated/dpctl.tensor.permute_dims.html | 891 ------ .../dpctl/generated/dpctl.tensor.place.html | 886 ------ .../generated/dpctl.tensor.positive.html | 890 ------ .../dpctl/generated/dpctl.tensor.pow.html | 894 ------ .../dpctl/generated/dpctl.tensor.prod.html | 921 ------ .../dpctl/generated/dpctl.tensor.put.html | 939 ------ .../dpctl.tensor.put_along_axis.html | 905 ------ .../dpctl/generated/dpctl.tensor.real.html | 894 ------ .../generated/dpctl.tensor.reciprocal.html | 892 ------ .../generated/dpctl.tensor.reduce_hypot.html | 916 ------ .../generated/dpctl.tensor.remainder.html | 895 ------ .../dpctl/generated/dpctl.tensor.repeat.html | 904 ------ .../dpctl/generated/dpctl.tensor.reshape.html | 891 ------ .../generated/dpctl.tensor.result_type.html | 883 ------ .../dpctl/generated/dpctl.tensor.roll.html | 903 ------ .../dpctl/generated/dpctl.tensor.round.html | 893 ------ .../dpctl/generated/dpctl.tensor.rsqrt.html | 892 ------ .../generated/dpctl.tensor.searchsorted.html | 898 ------ .../dpctl/generated/dpctl.tensor.sign.html | 895 ------ .../dpctl/generated/dpctl.tensor.signbit.html | 892 ------ .../dpctl/generated/dpctl.tensor.sin.html | 891 ------ .../dpctl/generated/dpctl.tensor.sinh.html | 891 ------ .../dpctl/generated/dpctl.tensor.sort.html | 897 ------ .../dpctl/generated/dpctl.tensor.sqrt.html | 892 ------ .../dpctl/generated/dpctl.tensor.square.html | 891 ------ .../dpctl/generated/dpctl.tensor.squeeze.html | 893 ------ .../dpctl/generated/dpctl.tensor.stack.html | 897 ------ .../dpctl/generated/dpctl.tensor.std.html | 905 ------ .../generated/dpctl.tensor.subtract.html | 893 ------ .../dpctl/generated/dpctl.tensor.sum.html | 922 ------ .../dpctl/generated/dpctl.tensor.take.html | 899 ------ .../dpctl.tensor.take_along_axis.html | 910 ------ .../dpctl/generated/dpctl.tensor.tan.html | 891 ------ .../dpctl/generated/dpctl.tensor.tanh.html | 891 ------ .../generated/dpctl.tensor.tensordot.html | 911 ------ .../dpctl/generated/dpctl.tensor.tile.html | 901 ------ .../dpctl/generated/dpctl.tensor.top_k.html | 906 ------ .../dpctl/generated/dpctl.tensor.tril.html | 892 ------ .../dpctl/generated/dpctl.tensor.triu.html | 892 ------ .../dpctl/generated/dpctl.tensor.trunc.html | 894 ------ .../generated/dpctl.tensor.unique_all.html | 903 ------ .../generated/dpctl.tensor.unique_counts.html | 896 ------ .../dpctl.tensor.unique_inverse.html | 893 ------ .../generated/dpctl.tensor.unique_values.html | 884 ------ .../dpctl/generated/dpctl.tensor.unstack.html | 891 ------ .../generated/dpctl.tensor.usm_ndarray.html | 1041 ------- .../dpctl/generated/dpctl.tensor.var.html | 904 ------ .../dpctl/generated/dpctl.tensor.vecdot.html | 900 ------ .../dpctl/generated/dpctl.tensor.where.html | 905 ------ .../dpctl/generated/dpctl.tensor.zeros.html | 905 ------ .../generated/dpctl.tensor.zeros_like.html | 907 ------ .../dpctl.SyclContext.addressof_ref.html | 882 ------ .../dpctl.SyclContext.device_count.html | 884 ------ .../dpctl.SyclContext.get_devices.html | 885 ------ .../dpctl.SyclDevice.addressof_ref.html | 889 ------ .../generated/dpctl.SyclDevice.backend.html | 887 ------ .../dpctl.SyclDevice.create_sub_devices.html | 942 ------ ...ctl.SyclDevice.default_selector_score.html | 882 ------ .../dpctl.SyclDevice.device_type.html | 890 ------ .../dpctl.SyclDevice.driver_version.html | 879 ------ .../dpctl.SyclDevice.filter_string.html | 895 ------ .../dpctl.SyclDevice.get_filter_string.html | 908 ------ ...SyclDevice.global_mem_cache_line_size.html | 879 ------ ...pctl.SyclDevice.global_mem_cache_size.html | 879 ------ ...pctl.SyclDevice.global_mem_cache_type.html | 890 ------ .../dpctl.SyclDevice.global_mem_size.html | 879 ------ ...ctl.SyclDevice.has_aspect_accelerator.html | 890 ------ .../dpctl.SyclDevice.has_aspect_atomic64.html | 902 ------ .../dpctl.SyclDevice.has_aspect_cpu.html | 888 ------ .../dpctl.SyclDevice.has_aspect_custom.html | 891 ------ .../dpctl.SyclDevice.has_aspect_emulated.html | 882 ------ .../dpctl.SyclDevice.has_aspect_fp16.html | 889 ------ .../dpctl.SyclDevice.has_aspect_fp64.html | 889 ------ .../dpctl.SyclDevice.has_aspect_gpu.html | 888 ------ ...SyclDevice.has_aspect_host_debuggable.html | 881 ------ .../dpctl.SyclDevice.has_aspect_image.html | 880 ------ ...SyclDevice.has_aspect_online_compiler.html | 881 ------ ...l.SyclDevice.has_aspect_online_linker.html | 881 ------ ...SyclDevice.has_aspect_queue_profiling.html | 880 ------ ...as_aspect_usm_atomic_host_allocations.html | 881 ------ ..._aspect_usm_atomic_shared_allocations.html | 883 ------ ...ice.has_aspect_usm_device_allocations.html | 880 ------ ...evice.has_aspect_usm_host_allocations.html | 881 ------ ...ice.has_aspect_usm_shared_allocations.html | 881 ------ ...ice.has_aspect_usm_system_allocations.html | 882 ------ .../dpctl.SyclDevice.image_2d_max_height.html | 881 ------ .../dpctl.SyclDevice.image_2d_max_width.html | 881 ------ .../dpctl.SyclDevice.image_3d_max_depth.html | 881 ------ .../dpctl.SyclDevice.image_3d_max_height.html | 881 ------ .../dpctl.SyclDevice.image_3d_max_width.html | 881 ------ .../dpctl.SyclDevice.is_accelerator.html | 881 ------ .../generated/dpctl.SyclDevice.is_cpu.html | 880 ------ .../generated/dpctl.SyclDevice.is_gpu.html | 880 ------ .../dpctl.SyclDevice.local_mem_size.html | 879 ------ .../dpctl.SyclDevice.max_clock_frequency.html | 879 ------ .../dpctl.SyclDevice.max_compute_units.html | 880 ------ .../dpctl.SyclDevice.max_mem_alloc_size.html | 879 ------ .../dpctl.SyclDevice.max_num_sub_groups.html | 882 ------ .../dpctl.SyclDevice.max_read_image_args.html | 882 ------ .../dpctl.SyclDevice.max_work_group_size.html | 881 ------ .../dpctl.SyclDevice.max_work_item_dims.html | 880 ------ .../dpctl.SyclDevice.max_work_item_sizes.html | 887 ------ ...pctl.SyclDevice.max_work_item_sizes1d.html | 883 ------ ...pctl.SyclDevice.max_work_item_sizes2d.html | 883 ------ ...pctl.SyclDevice.max_work_item_sizes3d.html | 884 ------ ...dpctl.SyclDevice.max_write_image_args.html | 882 ------ .../generated/dpctl.SyclDevice.name.html | 879 ------ ...l.SyclDevice.native_vector_width_char.html | 888 ------ ...SyclDevice.native_vector_width_double.html | 888 ------ ....SyclDevice.native_vector_width_float.html | 888 ------ ...l.SyclDevice.native_vector_width_half.html | 880 ------ ...tl.SyclDevice.native_vector_width_int.html | 888 ------ ...l.SyclDevice.native_vector_width_long.html | 888 ------ ....SyclDevice.native_vector_width_short.html | 888 ------ .../dpctl.SyclDevice.parent_device.html | 880 ------ ....SyclDevice.partition_max_sub_devices.html | 883 ------ ...yclDevice.preferred_vector_width_char.html | 888 ------ ...lDevice.preferred_vector_width_double.html | 892 ------ ...clDevice.preferred_vector_width_float.html | 888 ------ ...yclDevice.preferred_vector_width_half.html | 882 ------ ...SyclDevice.preferred_vector_width_int.html | 888 ------ ...yclDevice.preferred_vector_width_long.html | 888 ------ ...clDevice.preferred_vector_width_short.html | 888 ------ .../dpctl.SyclDevice.print_device_info.html | 871 ------ ...SyclDevice.profiling_timer_resolution.html | 879 ------ ...ub_group_independent_forward_progress.html | 881 ------ .../dpctl.SyclDevice.sub_group_sizes.html | 887 ------ .../dpctl.SyclDevice.sycl_platform.html | 879 ------ .../generated/dpctl.SyclDevice.vendor.html | 879 ------ .../dpctl.SyclEvent.addressof_ref.html | 881 ------ .../generated/dpctl.SyclEvent.backend.html | 888 ------ .../dpctl.SyclEvent.execution_status.html | 889 ------ .../dpctl.SyclEvent.get_wait_list.html | 880 ------ .../dpctl.SyclEvent.profiling_info_end.html | 880 ------ .../dpctl.SyclEvent.profiling_info_start.html | 881 ------ ...dpctl.SyclEvent.profiling_info_submit.html | 882 ------ .../generated/dpctl.SyclEvent.wait.html | 876 ------ .../generated/dpctl.SyclEvent.wait_for.html | 871 ------ .../generated/dpctl.SyclPlatform.backend.html | 879 ------ .../dpctl.SyclPlatform.default_context.html | 883 ------ .../generated/dpctl.SyclPlatform.name.html | 879 ------ ...pctl.SyclPlatform.print_platform_info.html | 892 ------ .../generated/dpctl.SyclPlatform.vendor.html | 879 ------ .../generated/dpctl.SyclPlatform.version.html | 879 ------ .../dpctl.SyclQueue.addressof_ref.html | 881 ------ .../generated/dpctl.SyclQueue.backend.html | 879 ------ .../dpctl.SyclQueue.driver_version.html | 880 ------ .../dpctl.SyclQueue.get_sycl_context.html | 870 ------ .../dpctl.SyclQueue.get_sycl_device.html | 870 ------ .../dpctl.SyclQueue.has_enable_profiling.html | 905 ------ .../dpctl.SyclQueue.is_in_order.html | 898 ------ .../generated/dpctl.SyclQueue.mem_advise.html | 870 ------ .../generated/dpctl.SyclQueue.memcpy.html | 871 ------ .../dpctl.SyclQueue.memcpy_async.html | 871 ------ .../generated/dpctl.SyclQueue.name.html | 880 ------ .../generated/dpctl.SyclQueue.prefetch.html | 870 ------ .../dpctl.SyclQueue.print_device_info.html | 872 ------ .../generated/dpctl.SyclQueue.submit.html | 896 ------ .../dpctl.SyclQueue.submit_async.html | 901 ------ .../dpctl.SyclQueue.submit_barrier.html | 887 ------ .../dpctl.SyclQueue.sycl_context.html | 880 ------ .../dpctl.SyclQueue.sycl_device.html | 880 ------ .../generated/dpctl.SyclQueue.wait.html | 870 ------ .../generated/dpctl.SyclTimer.__init__.html | 883 ------ .../generated/dpctl.SyclTimer.dt.html | 912 ------ ...SMDevice.__sycl_usm_array_interface__.html | 912 ------ ...mory.MemoryUSMDevice.copy_from_device.html | 872 ------ ...memory.MemoryUSMDevice.copy_from_host.html | 871 ------ ...l.memory.MemoryUSMDevice.copy_to_host.html | 872 ------ ...l.memory.MemoryUSMDevice.get_usm_type.html | 874 ------ ...ory.MemoryUSMDevice.get_usm_type_enum.html | 875 ------ .../dpctl.memory.MemoryUSMDevice.memset.html | 871 ------ .../dpctl.memory.MemoryUSMDevice.nbytes.html | 871 ------ ....memory.MemoryUSMDevice.reference_obj.html | 871 ------ .../dpctl.memory.MemoryUSMDevice.size.html | 871 ------ ...l.memory.MemoryUSMDevice.sycl_context.html | 871 ------ ...tl.memory.MemoryUSMDevice.sycl_device.html | 871 ------ ...ctl.memory.MemoryUSMDevice.sycl_queue.html | 873 ------ .../dpctl.memory.MemoryUSMDevice.tobytes.html | 871 ------ ...yUSMHost.__sycl_usm_array_interface__.html | 912 ------ ...memory.MemoryUSMHost.copy_from_device.html | 872 ------ ...l.memory.MemoryUSMHost.copy_from_host.html | 871 ------ ...ctl.memory.MemoryUSMHost.copy_to_host.html | 872 ------ ...ctl.memory.MemoryUSMHost.get_usm_type.html | 874 ------ ...emory.MemoryUSMHost.get_usm_type_enum.html | 875 ------ .../dpctl.memory.MemoryUSMHost.memset.html | 871 ------ .../dpctl.memory.MemoryUSMHost.nbytes.html | 871 ------ ...tl.memory.MemoryUSMHost.reference_obj.html | 871 ------ .../dpctl.memory.MemoryUSMHost.size.html | 871 ------ ...ctl.memory.MemoryUSMHost.sycl_context.html | 871 ------ ...pctl.memory.MemoryUSMHost.sycl_device.html | 871 ------ ...dpctl.memory.MemoryUSMHost.sycl_queue.html | 873 ------ .../dpctl.memory.MemoryUSMHost.tobytes.html | 871 ------ ...SMShared.__sycl_usm_array_interface__.html | 912 ------ ...mory.MemoryUSMShared.copy_from_device.html | 872 ------ ...memory.MemoryUSMShared.copy_from_host.html | 871 ------ ...l.memory.MemoryUSMShared.copy_to_host.html | 872 ------ ...l.memory.MemoryUSMShared.get_usm_type.html | 874 ------ ...ory.MemoryUSMShared.get_usm_type_enum.html | 875 ------ .../dpctl.memory.MemoryUSMShared.memset.html | 871 ------ .../dpctl.memory.MemoryUSMShared.nbytes.html | 871 ------ ....memory.MemoryUSMShared.reference_obj.html | 871 ------ .../dpctl.memory.MemoryUSMShared.size.html | 871 ------ ...l.memory.MemoryUSMShared.sycl_context.html | 871 ------ ...tl.memory.MemoryUSMShared.sycl_device.html | 871 ------ ...ctl.memory.MemoryUSMShared.sycl_queue.html | 873 ------ .../dpctl.memory.MemoryUSMShared.tobytes.html | 871 ------ ...l.tensor._array_api.Info.capabilities.html | 893 ------ ...tensor._array_api.Info.default_device.html | 871 ------ ...tensor._array_api.Info.default_dtypes.html | 897 ------ .../dpctl.tensor._array_api.Info.devices.html | 871 ------ .../dpctl.tensor._array_api.Info.dtypes.html | 918 ------ .../generated/dpctl.tensor.usm_ndarray.T.html | 872 ------ .../dpctl.tensor.usm_ndarray.__dlpack__.html | 915 ------ ....tensor.usm_ndarray.__dlpack_device__.html | 880 ------ ..._ndarray.__sycl_usm_array_interface__.html | 872 ------ ...dpctl.tensor.usm_ndarray._byte_bounds.html | 890 ------ ...tl.tensor.usm_ndarray._element_offset.html | 872 ------ .../dpctl.tensor.usm_ndarray._pointer.html | 872 ------ .../dpctl.tensor.usm_ndarray.device.html | 886 ------ .../dpctl.tensor.usm_ndarray.dtype.html | 871 ------ .../dpctl.tensor.usm_ndarray.flags.html | 871 ------ .../dpctl.tensor.usm_ndarray.imag.html | 885 ------ .../dpctl.tensor.usm_ndarray.itemsize.html | 871 ------ .../dpctl.tensor.usm_ndarray.mT.html | 872 ------ .../dpctl.tensor.usm_ndarray.nbytes.html | 871 ------ .../dpctl.tensor.usm_ndarray.ndim.html | 871 ------ .../dpctl.tensor.usm_ndarray.real.html | 890 ------ .../dpctl.tensor.usm_ndarray.shape.html | 886 ------ .../dpctl.tensor.usm_ndarray.size.html | 871 ------ .../dpctl.tensor.usm_ndarray.strides.html | 892 ------ ...dpctl.tensor.usm_ndarray.sycl_context.html | 871 ------ .../dpctl.tensor.usm_ndarray.sycl_device.html | 871 ------ .../dpctl.tensor.usm_ndarray.sycl_queue.html | 871 ------ .../dpctl.tensor.usm_ndarray.to_device.html | 910 ------ .../dpctl.tensor.usm_ndarray.usm_data.html | 871 ------ .../dpctl.tensor.usm_ndarray.usm_type.html | 894 ------ pulls/1961/api_reference/dpctl/index.html | 972 ------ pulls/1961/api_reference/dpctl/memory.html | 920 ------ pulls/1961/api_reference/dpctl/program.html | 886 ------ .../dpctl/sycl_usm_array_interface.html | 927 ------ .../api_reference/dpctl/tensor.constants.html | 954 ------ .../dpctl/tensor.creation_functions.html | 908 ------ .../dpctl/tensor.data_type_functions.html | 872 ------ .../dpctl/tensor.data_types.html | 998 ------ .../dpctl/tensor.elementwise_functions.html | 1067 ------- pulls/1961/api_reference/dpctl/tensor.html | 870 ------ .../dpctl/tensor.indexing_functions.html | 872 ------ .../dpctl/tensor.inspection.html | 864 ------ .../dpctl/tensor.linear_algebra.html | 864 ------ .../dpctl/tensor.manipulation_functions.html | 895 ------ .../dpctl/tensor.searching_functions.html | 870 ------ .../dpctl/tensor.set_functions.html | 864 ------ .../dpctl/tensor.sorting_functions.html | 861 ----- .../dpctl/tensor.statistical_functions.html | 879 ------ .../dpctl/tensor.usm_ndarray.html | 896 ------ .../dpctl/tensor.utility_functions.html | 919 ------ pulls/1961/api_reference/dpctl/utils.html | 1029 ------ pulls/1961/api_reference/dpctl_capi.html | 1528 --------- pulls/1961/api_reference/dpctl_cmake.html | 868 ------ pulls/1961/api_reference/dpctl_cython.html | 875 ------ pulls/1961/api_reference/dpctl_pybind11.html | 883 ------ pulls/1961/api_reference/index.html | 891 ------ ...linterface_dpctl_accelerator_selector.html | 891 ------ ...pctl_syclinterface_dpctl_cpu_selector.html | 891 ------ ..._syclinterface_dpctl_default_selector.html | 891 ------ ...l_syclinterface_dpctl_device_selector.html | 871 ------ ...l_syclinterface_dpctl_filter_selector.html | 895 ------ ...pctl_syclinterface_dpctl_gpu_selector.html | 891 ------ .../enum_DPCTLGlobalMemCacheType.html | 855 ----- .../generated/enum_DPCTLKernelArgType.html | 893 ------ ...enum_DPCTLPartitionAffinityDomainType.html | 859 ----- .../enum_DPCTLQueuePropertyType.html | 855 ----- .../generated/enum_DPCTLSyclAspectType.html | 872 ------ .../generated/enum_DPCTLSyclBackendType.html | 858 ----- .../generated/enum_DPCTLSyclDeviceType.html | 859 ----- .../enum_DPCTLSyclEventStatusType.html | 855 ----- .../generated/enum_DPCTLSyclUSMType.html | 856 ----- .../libsyclinterface/generated/global.html | 1437 --------- .../generated/group_DeviceManager.html | 849 ----- .../generated/group_PlatformManager.html | 849 ----- .../libsyclinterface/generated/index.html | 866 ------ .../generated/namespace_dpctl.html | 855 ----- .../namespace_dpctl_syclinterface.html | 860 ----- .../libsyclinterface/generated/page_todo.html | 869 ------ .../generated/struct_MDLocalAccessorTy.html | 861 ----- .../api_reference/libsyclinterface/index.html | 851 ----- pulls/1961/beginners_guides/index.html | 907 ------ pulls/1961/beginners_guides/installation.html | 1051 ------- .../beginners_guides/managing_devices.html | 1206 ------- pulls/1961/beginners_guides/misc.html | 916 ------ pulls/1961/beginners_guides/tensor_intro.html | 1152 ------- pulls/1961/contributor_guides/building.html | 1067 ------- pulls/1961/contributor_guides/index.html | 854 ----- .../memory_ownership_sycl_interface.html | 906 ------ pulls/1961/genindex.html | 2582 --------------- pulls/1961/index.html | 903 ------ pulls/1961/license.html | 875 ------ pulls/1961/objects.inv | Bin 17788 -> 0 bytes pulls/1961/py-modindex.html | 861 ----- pulls/1961/search.html | 833 ----- pulls/1961/searchindex.js | 1 - pulls/1961/user_guides/basic_concepts.html | 1117 ------- pulls/1961/user_guides/dlpack.html | 988 ------ .../user_guides/environment_variables.html | 916 ------ pulls/1961/user_guides/execution_model.html | 989 ------ pulls/1961/user_guides/index.html | 854 ----- 932 files changed, 438034 deletions(-) delete mode 100644 pulls/1961/_modules/dpctl.html delete mode 100644 pulls/1961/_modules/dpctl/_device_selection.html delete mode 100644 pulls/1961/_modules/dpctl/_sycl_timer.html delete mode 100644 pulls/1961/_modules/dpctl/tensor/_array_api.html delete mode 100644 pulls/1961/_modules/dpctl/tensor/_clip.html delete mode 100644 pulls/1961/_modules/dpctl/tensor/_copy_utils.html delete mode 100644 pulls/1961/_modules/dpctl/tensor/_ctors.html delete mode 100644 pulls/1961/_modules/dpctl/tensor/_device.html delete mode 100644 pulls/1961/_modules/dpctl/tensor/_indexing_functions.html delete mode 100644 pulls/1961/_modules/dpctl/tensor/_linear_algebra_functions.html delete mode 100644 pulls/1961/_modules/dpctl/tensor/_manipulation_functions.html delete mode 100644 pulls/1961/_modules/dpctl/tensor/_reduction.html delete mode 100644 pulls/1961/_modules/dpctl/tensor/_reshape.html delete mode 100644 pulls/1961/_modules/dpctl/tensor/_search_functions.html delete mode 100644 pulls/1961/_modules/dpctl/tensor/_searchsorted.html delete mode 100644 pulls/1961/_modules/dpctl/tensor/_set_functions.html delete mode 100644 pulls/1961/_modules/dpctl/tensor/_sorting.html delete mode 100644 pulls/1961/_modules/dpctl/tensor/_statistical_functions.html delete mode 100644 pulls/1961/_modules/dpctl/tensor/_testing.html delete mode 100644 pulls/1961/_modules/dpctl/tensor/_type_utils.html delete mode 100644 pulls/1961/_modules/dpctl/tensor/_utility_functions.html delete mode 100644 pulls/1961/_modules/dpctl/utils/_intel_device_info.html delete mode 100644 pulls/1961/_modules/dpctl/utils/_onetrace_context.html delete mode 100644 pulls/1961/_modules/index.html delete mode 100644 pulls/1961/_sources/api_reference/dpctl/examples/usm_ndarray.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/filter_selector_string.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/flags.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.SyclContext.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.SyclContextCreationError.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.SyclDevice.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.SyclDeviceCreationError.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.SyclEvent.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.SyclPlatform.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.SyclQueue.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.SyclQueueCreationError.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.SyclSubDeviceCreationError.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.SyclTimer.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.get_devices.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.get_include.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.get_num_devices.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.has_accelerator_devices.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.has_cpu_devices.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.has_gpu_devices.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.lsplatform.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.memory.MemoryUSMDevice.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.memory.MemoryUSMHost.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.memory.MemoryUSMShared.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.memory.USMAllocationError.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.memory.as_usm_memory.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.program.SyclKernel.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.program.SyclProgram.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.program.SyclProgramCompilationError.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.program.create_program_from_source.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.program.create_program_from_spirv.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.select_accelerator_device.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.select_cpu_device.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.select_default_device.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.select_device_with_aspects.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.select_gpu_device.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.__array_api_version__.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.__array_namespace_info__.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor._array_api.Info.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.abs.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.acos.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.acosh.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.add.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.all.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.allclose.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.angle.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.any.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.arange.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.argmax.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.argmin.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.argsort.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.asarray.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.asin.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.asinh.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.astype.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.atan.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.atan2.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.atanh.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.bitwise_and.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.bitwise_invert.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.bitwise_left_shift.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.bitwise_or.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.bitwise_right_shift.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.bitwise_xor.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.broadcast_arrays.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.broadcast_to.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.can_cast.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.cbrt.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.ceil.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.clip.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.concat.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.conj.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.copy.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.copysign.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.cos.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.cosh.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.count_nonzero.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.diff.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.divide.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.empty.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.empty_like.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.equal.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.exp.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.exp2.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.expand_dims.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.expm1.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.extract.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.eye.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.finfo.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.flip.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.floor.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.floor_divide.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.from_dlpack.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.from_numpy.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.full.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.full_like.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.greater.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.greater_equal.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.hypot.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.iinfo.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.imag.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.isdtype.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.isfinite.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.isinf.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.isnan.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.less.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.less_equal.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.linspace.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.log.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.log10.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.log1p.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.log2.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.logaddexp.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.logical_and.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.logical_not.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.logical_or.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.logical_xor.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.logsumexp.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.matmul.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.matrix_transpose.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.max.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.maximum.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.mean.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.meshgrid.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.min.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.minimum.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.moveaxis.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.multiply.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.negative.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.nextafter.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.nonzero.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.not_equal.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.ones.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.ones_like.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.permute_dims.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.place.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.positive.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.pow.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.prod.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.put.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.put_along_axis.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.real.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.reciprocal.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.reduce_hypot.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.remainder.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.repeat.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.reshape.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.result_type.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.roll.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.round.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.rsqrt.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.searchsorted.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.sign.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.signbit.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.sin.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.sinh.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.sort.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.sqrt.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.square.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.squeeze.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.stack.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.std.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.subtract.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.sum.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.take.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.take_along_axis.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.tan.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.tanh.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.tensordot.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.tile.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.top_k.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.tril.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.triu.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.trunc.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.unique_all.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.unique_counts.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.unique_inverse.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.unique_values.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.unstack.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.usm_ndarray.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.var.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.vecdot.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.where.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.zeros.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.zeros_like.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclContext.addressof_ref.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclContext.device_count.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclContext.get_devices.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.addressof_ref.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.backend.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.create_sub_devices.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.default_selector_score.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.device_type.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.driver_version.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.filter_string.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.get_filter_string.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.global_mem_cache_line_size.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.global_mem_cache_size.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.global_mem_cache_type.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.global_mem_size.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_accelerator.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_atomic64.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_cpu.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_custom.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_emulated.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_fp16.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_fp64.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_gpu.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_host_debuggable.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_image.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_online_compiler.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_online_linker.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_queue_profiling.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_usm_atomic_host_allocations.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_usm_atomic_shared_allocations.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_usm_device_allocations.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_usm_host_allocations.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_usm_shared_allocations.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_usm_system_allocations.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.image_2d_max_height.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.image_2d_max_width.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.image_3d_max_depth.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.image_3d_max_height.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.image_3d_max_width.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.is_accelerator.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.is_cpu.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.is_gpu.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.local_mem_size.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_clock_frequency.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_compute_units.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_mem_alloc_size.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_num_sub_groups.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_read_image_args.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_work_group_size.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_work_item_dims.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_work_item_sizes.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_work_item_sizes1d.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_work_item_sizes2d.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_work_item_sizes3d.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_write_image_args.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.name.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.native_vector_width_char.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.native_vector_width_double.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.native_vector_width_float.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.native_vector_width_half.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.native_vector_width_int.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.native_vector_width_long.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.native_vector_width_short.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.parent_device.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.partition_max_sub_devices.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.preferred_vector_width_char.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.preferred_vector_width_double.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.preferred_vector_width_float.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.preferred_vector_width_half.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.preferred_vector_width_int.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.preferred_vector_width_long.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.preferred_vector_width_short.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.print_device_info.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.profiling_timer_resolution.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.sub_group_independent_forward_progress.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.sub_group_sizes.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.sycl_platform.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.vendor.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclEvent.addressof_ref.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclEvent.backend.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclEvent.execution_status.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclEvent.get_wait_list.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclEvent.profiling_info_end.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclEvent.profiling_info_start.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclEvent.profiling_info_submit.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclEvent.wait.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclEvent.wait_for.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclPlatform.backend.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclPlatform.default_context.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclPlatform.name.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclPlatform.print_platform_info.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclPlatform.vendor.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclPlatform.version.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.addressof_ref.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.backend.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.driver_version.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.get_sycl_context.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.get_sycl_device.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.has_enable_profiling.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.is_in_order.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.mem_advise.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.memcpy.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.memcpy_async.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.name.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.prefetch.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.print_device_info.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.submit.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.submit_async.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.submit_barrier.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.sycl_context.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.sycl_device.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.wait.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclTimer.__init__.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclTimer.dt.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.__sycl_usm_array_interface__.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.copy_from_device.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.copy_from_host.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.copy_to_host.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.get_usm_type.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.get_usm_type_enum.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.memset.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.nbytes.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.reference_obj.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.size.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.sycl_context.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.sycl_device.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.sycl_queue.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.tobytes.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.__sycl_usm_array_interface__.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.copy_from_device.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.copy_from_host.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.copy_to_host.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.get_usm_type.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.get_usm_type_enum.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.memset.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.nbytes.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.reference_obj.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.size.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.sycl_context.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.sycl_device.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.sycl_queue.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.tobytes.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.__sycl_usm_array_interface__.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.copy_from_device.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.copy_from_host.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.copy_to_host.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.get_usm_type.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.get_usm_type_enum.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.memset.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.nbytes.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.reference_obj.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.size.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.sycl_context.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.sycl_device.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.sycl_queue.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.tobytes.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor._array_api.Info.capabilities.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor._array_api.Info.default_device.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor._array_api.Info.default_dtypes.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor._array_api.Info.devices.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor._array_api.Info.dtypes.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.T.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.__dlpack__.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.__dlpack_device__.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.__sycl_usm_array_interface__.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray._byte_bounds.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray._element_offset.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray._pointer.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.device.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.dtype.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.flags.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.imag.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.itemsize.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.mT.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.nbytes.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.ndim.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.real.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.shape.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.size.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.strides.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.sycl_context.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.sycl_device.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.sycl_queue.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.to_device.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.usm_data.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.usm_type.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/index.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/memory.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/program.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/sycl_usm_array_interface.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/tensor.constants.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/tensor.creation_functions.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/tensor.data_type_functions.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/tensor.data_types.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/tensor.elementwise_functions.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/tensor.indexing_functions.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/tensor.inspection.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/tensor.linear_algebra.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/tensor.manipulation_functions.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/tensor.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/tensor.searching_functions.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/tensor.set_functions.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/tensor.sorting_functions.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/tensor.statistical_functions.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/tensor.usm_ndarray.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/tensor.utility_functions.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl/utils.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl_capi.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl_cmake.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl_cython.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/dpctl_pybind11.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/index.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/libsyclinterface/generated/class_dpctl_syclinterface_dpctl_accelerator_selector.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/libsyclinterface/generated/class_dpctl_syclinterface_dpctl_cpu_selector.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/libsyclinterface/generated/class_dpctl_syclinterface_dpctl_default_selector.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/libsyclinterface/generated/class_dpctl_syclinterface_dpctl_device_selector.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/libsyclinterface/generated/class_dpctl_syclinterface_dpctl_filter_selector.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/libsyclinterface/generated/class_dpctl_syclinterface_dpctl_gpu_selector.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/libsyclinterface/generated/enum_DPCTLGlobalMemCacheType.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/libsyclinterface/generated/enum_DPCTLKernelArgType.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/libsyclinterface/generated/enum_DPCTLPartitionAffinityDomainType.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/libsyclinterface/generated/enum_DPCTLQueuePropertyType.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/libsyclinterface/generated/enum_DPCTLSyclAspectType.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/libsyclinterface/generated/enum_DPCTLSyclBackendType.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/libsyclinterface/generated/enum_DPCTLSyclDeviceType.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/libsyclinterface/generated/enum_DPCTLSyclEventStatusType.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/libsyclinterface/generated/enum_DPCTLSyclUSMType.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/libsyclinterface/generated/global.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/libsyclinterface/generated/group_DeviceManager.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/libsyclinterface/generated/group_PlatformManager.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/libsyclinterface/generated/index.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/libsyclinterface/generated/namespace_dpctl.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/libsyclinterface/generated/namespace_dpctl_syclinterface.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/libsyclinterface/generated/page_todo.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/libsyclinterface/generated/struct_MDLocalAccessorTy.rst.txt delete mode 100644 pulls/1961/_sources/api_reference/libsyclinterface/index.rst.txt delete mode 100644 pulls/1961/_sources/beginners_guides/index.rst.txt delete mode 100644 pulls/1961/_sources/beginners_guides/installation.rst.txt delete mode 100644 pulls/1961/_sources/beginners_guides/managing_devices.rst.txt delete mode 100644 pulls/1961/_sources/beginners_guides/misc.rst.txt delete mode 100644 pulls/1961/_sources/beginners_guides/tensor_intro.rst.txt delete mode 100644 pulls/1961/_sources/contributor_guides/building.rst.txt delete mode 100644 pulls/1961/_sources/contributor_guides/index.rst.txt delete mode 100644 pulls/1961/_sources/contributor_guides/memory_ownership_sycl_interface.rst.txt delete mode 100644 pulls/1961/_sources/index.rst.txt delete mode 100644 pulls/1961/_sources/license.rst.txt delete mode 100644 pulls/1961/_sources/user_guides/basic_concepts.rst.txt delete mode 100644 pulls/1961/_sources/user_guides/dlpack.rst.txt delete mode 100644 pulls/1961/_sources/user_guides/environment_variables.rst.txt delete mode 100644 pulls/1961/_sources/user_guides/execution_model.rst.txt delete mode 100644 pulls/1961/_sources/user_guides/index.rst.txt delete mode 100644 pulls/1961/_sphinx_design_static/design-tabs.js delete mode 100644 pulls/1961/_sphinx_design_static/sphinx-design.min.css delete mode 100644 pulls/1961/_static/basic.css delete mode 100644 pulls/1961/_static/check-solid.svg delete mode 100644 pulls/1961/_static/clipboard.min.js delete mode 100644 pulls/1961/_static/copy-button.svg delete mode 100644 pulls/1961/_static/copybutton.css delete mode 100644 pulls/1961/_static/copybutton.js delete mode 100644 pulls/1961/_static/copybutton_funcs.js delete mode 100644 pulls/1961/_static/debug.css delete mode 100644 pulls/1961/_static/design-tabs.js delete mode 100644 pulls/1961/_static/doctools.js delete mode 100644 pulls/1961/_static/documentation_options.js delete mode 100644 pulls/1961/_static/doxyrest-pygments.css delete mode 100644 pulls/1961/_static/dpctl.svg delete mode 100644 pulls/1961/_static/file.png delete mode 100644 pulls/1961/_static/language_data.js delete mode 100644 pulls/1961/_static/minus.png delete mode 100644 pulls/1961/_static/plus.png delete mode 100644 pulls/1961/_static/pygments.css delete mode 100644 pulls/1961/_static/scripts/furo-extensions.js delete mode 100644 pulls/1961/_static/scripts/furo.js delete mode 100644 pulls/1961/_static/scripts/furo.js.LICENSE.txt delete mode 100644 pulls/1961/_static/scripts/furo.js.map delete mode 100644 pulls/1961/_static/searchtools.js delete mode 100644 pulls/1961/_static/skeleton.css delete mode 100644 pulls/1961/_static/sphinx-design.min.css delete mode 100644 pulls/1961/_static/sphinx_highlight.js delete mode 100644 pulls/1961/_static/styles/furo-extensions.css delete mode 100644 pulls/1961/_static/styles/furo-extensions.css.map delete mode 100644 pulls/1961/_static/styles/furo.css delete mode 100644 pulls/1961/_static/styles/furo.css.map delete mode 100644 pulls/1961/_static/target-highlight.js delete mode 100644 pulls/1961/api_reference/dpctl/examples/usm_ndarray.html delete mode 100644 pulls/1961/api_reference/dpctl/filter_selector_string.html delete mode 100644 pulls/1961/api_reference/dpctl/flags.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.SyclContext.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.SyclContextCreationError.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.SyclDevice.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.SyclDeviceCreationError.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.SyclEvent.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.SyclPlatform.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.SyclQueue.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.SyclQueueCreationError.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.SyclSubDeviceCreationError.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.SyclTimer.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.get_devices.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.get_include.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.get_num_devices.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.has_accelerator_devices.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.has_cpu_devices.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.has_gpu_devices.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.lsplatform.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.memory.MemoryUSMDevice.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.memory.MemoryUSMHost.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.memory.MemoryUSMShared.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.memory.USMAllocationError.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.memory.as_usm_memory.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.program.SyclKernel.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.program.SyclProgram.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.program.SyclProgramCompilationError.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.program.create_program_from_source.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.program.create_program_from_spirv.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.select_accelerator_device.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.select_cpu_device.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.select_default_device.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.select_device_with_aspects.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.select_gpu_device.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.__array_api_version__.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.__array_namespace_info__.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor._array_api.Info.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.abs.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.acos.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.acosh.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.add.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.all.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.allclose.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.angle.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.any.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.arange.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.argmax.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.argmin.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.argsort.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.asarray.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.asin.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.asinh.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.astype.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.atan.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.atan2.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.atanh.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.bitwise_and.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.bitwise_invert.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.bitwise_left_shift.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.bitwise_or.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.bitwise_right_shift.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.bitwise_xor.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.broadcast_arrays.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.broadcast_to.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.can_cast.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.cbrt.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.ceil.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.clip.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.concat.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.conj.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.copy.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.copysign.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.cos.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.cosh.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.count_nonzero.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.diff.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.divide.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.empty.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.empty_like.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.equal.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.exp.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.exp2.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.expand_dims.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.expm1.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.extract.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.eye.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.finfo.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.flip.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.floor.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.floor_divide.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.from_dlpack.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.from_numpy.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.full.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.full_like.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.greater.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.greater_equal.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.hypot.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.iinfo.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.imag.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.isdtype.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.isfinite.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.isinf.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.isnan.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.less.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.less_equal.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.linspace.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.log.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.log10.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.log1p.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.log2.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.logaddexp.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.logical_and.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.logical_not.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.logical_or.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.logical_xor.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.logsumexp.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.matmul.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.matrix_transpose.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.max.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.maximum.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.mean.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.meshgrid.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.min.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.minimum.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.moveaxis.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.multiply.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.negative.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.nextafter.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.nonzero.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.not_equal.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.ones.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.ones_like.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.permute_dims.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.place.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.positive.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.pow.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.prod.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.put.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.put_along_axis.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.real.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.reciprocal.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.reduce_hypot.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.remainder.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.repeat.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.reshape.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.result_type.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.roll.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.round.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.rsqrt.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.searchsorted.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.sign.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.signbit.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.sin.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.sinh.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.sort.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.sqrt.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.square.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.squeeze.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.stack.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.std.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.subtract.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.sum.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.take.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.take_along_axis.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.tan.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.tanh.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.tensordot.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.tile.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.top_k.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.tril.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.triu.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.trunc.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.unique_all.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.unique_counts.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.unique_inverse.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.unique_values.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.unstack.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.usm_ndarray.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.var.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.vecdot.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.where.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.zeros.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/dpctl.tensor.zeros_like.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclContext.addressof_ref.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclContext.device_count.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclContext.get_devices.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.addressof_ref.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.backend.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.create_sub_devices.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.default_selector_score.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.device_type.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.driver_version.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.filter_string.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.get_filter_string.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.global_mem_cache_line_size.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.global_mem_cache_size.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.global_mem_cache_type.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.global_mem_size.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_accelerator.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_atomic64.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_cpu.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_custom.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_emulated.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_fp16.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_fp64.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_gpu.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_host_debuggable.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_image.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_online_compiler.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_online_linker.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_queue_profiling.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_usm_atomic_host_allocations.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_usm_atomic_shared_allocations.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_usm_device_allocations.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_usm_host_allocations.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_usm_shared_allocations.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_usm_system_allocations.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.image_2d_max_height.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.image_2d_max_width.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.image_3d_max_depth.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.image_3d_max_height.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.image_3d_max_width.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.is_accelerator.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.is_cpu.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.is_gpu.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.local_mem_size.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_clock_frequency.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_compute_units.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_mem_alloc_size.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_num_sub_groups.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_read_image_args.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_work_group_size.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_work_item_dims.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_work_item_sizes.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_work_item_sizes1d.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_work_item_sizes2d.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_work_item_sizes3d.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_write_image_args.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.name.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.native_vector_width_char.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.native_vector_width_double.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.native_vector_width_float.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.native_vector_width_half.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.native_vector_width_int.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.native_vector_width_long.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.native_vector_width_short.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.parent_device.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.partition_max_sub_devices.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.preferred_vector_width_char.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.preferred_vector_width_double.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.preferred_vector_width_float.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.preferred_vector_width_half.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.preferred_vector_width_int.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.preferred_vector_width_long.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.preferred_vector_width_short.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.print_device_info.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.profiling_timer_resolution.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.sub_group_independent_forward_progress.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.sub_group_sizes.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.sycl_platform.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclDevice.vendor.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclEvent.addressof_ref.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclEvent.backend.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclEvent.execution_status.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclEvent.get_wait_list.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclEvent.profiling_info_end.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclEvent.profiling_info_start.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclEvent.profiling_info_submit.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclEvent.wait.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclEvent.wait_for.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclPlatform.backend.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclPlatform.default_context.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclPlatform.name.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclPlatform.print_platform_info.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclPlatform.vendor.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclPlatform.version.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclQueue.addressof_ref.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclQueue.backend.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclQueue.driver_version.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclQueue.get_sycl_context.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclQueue.get_sycl_device.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclQueue.has_enable_profiling.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclQueue.is_in_order.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclQueue.mem_advise.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclQueue.memcpy.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclQueue.memcpy_async.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclQueue.name.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclQueue.prefetch.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclQueue.print_device_info.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclQueue.submit.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclQueue.submit_async.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclQueue.submit_barrier.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclQueue.sycl_context.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclQueue.sycl_device.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclQueue.wait.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclTimer.__init__.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.SyclTimer.dt.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.__sycl_usm_array_interface__.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.copy_from_device.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.copy_from_host.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.copy_to_host.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.get_usm_type.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.get_usm_type_enum.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.memset.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.nbytes.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.reference_obj.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.size.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.sycl_context.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.sycl_device.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.sycl_queue.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.tobytes.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.__sycl_usm_array_interface__.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.copy_from_device.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.copy_from_host.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.copy_to_host.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.get_usm_type.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.get_usm_type_enum.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.memset.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.nbytes.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.reference_obj.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.size.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.sycl_context.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.sycl_device.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.sycl_queue.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.tobytes.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.__sycl_usm_array_interface__.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.copy_from_device.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.copy_from_host.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.copy_to_host.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.get_usm_type.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.get_usm_type_enum.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.memset.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.nbytes.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.reference_obj.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.size.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.sycl_context.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.sycl_device.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.sycl_queue.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.tobytes.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.tensor._array_api.Info.capabilities.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.tensor._array_api.Info.default_device.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.tensor._array_api.Info.default_dtypes.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.tensor._array_api.Info.devices.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.tensor._array_api.Info.dtypes.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.T.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.__dlpack__.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.__dlpack_device__.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.__sycl_usm_array_interface__.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray._byte_bounds.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray._element_offset.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray._pointer.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.device.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.dtype.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.flags.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.imag.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.itemsize.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.mT.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.nbytes.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.ndim.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.real.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.shape.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.size.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.strides.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.sycl_context.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.sycl_device.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.sycl_queue.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.to_device.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.usm_data.html delete mode 100644 pulls/1961/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.usm_type.html delete mode 100644 pulls/1961/api_reference/dpctl/index.html delete mode 100644 pulls/1961/api_reference/dpctl/memory.html delete mode 100644 pulls/1961/api_reference/dpctl/program.html delete mode 100644 pulls/1961/api_reference/dpctl/sycl_usm_array_interface.html delete mode 100644 pulls/1961/api_reference/dpctl/tensor.constants.html delete mode 100644 pulls/1961/api_reference/dpctl/tensor.creation_functions.html delete mode 100644 pulls/1961/api_reference/dpctl/tensor.data_type_functions.html delete mode 100644 pulls/1961/api_reference/dpctl/tensor.data_types.html delete mode 100644 pulls/1961/api_reference/dpctl/tensor.elementwise_functions.html delete mode 100644 pulls/1961/api_reference/dpctl/tensor.html delete mode 100644 pulls/1961/api_reference/dpctl/tensor.indexing_functions.html delete mode 100644 pulls/1961/api_reference/dpctl/tensor.inspection.html delete mode 100644 pulls/1961/api_reference/dpctl/tensor.linear_algebra.html delete mode 100644 pulls/1961/api_reference/dpctl/tensor.manipulation_functions.html delete mode 100644 pulls/1961/api_reference/dpctl/tensor.searching_functions.html delete mode 100644 pulls/1961/api_reference/dpctl/tensor.set_functions.html delete mode 100644 pulls/1961/api_reference/dpctl/tensor.sorting_functions.html delete mode 100644 pulls/1961/api_reference/dpctl/tensor.statistical_functions.html delete mode 100644 pulls/1961/api_reference/dpctl/tensor.usm_ndarray.html delete mode 100644 pulls/1961/api_reference/dpctl/tensor.utility_functions.html delete mode 100644 pulls/1961/api_reference/dpctl/utils.html delete mode 100644 pulls/1961/api_reference/dpctl_capi.html delete mode 100644 pulls/1961/api_reference/dpctl_cmake.html delete mode 100644 pulls/1961/api_reference/dpctl_cython.html delete mode 100644 pulls/1961/api_reference/dpctl_pybind11.html delete mode 100644 pulls/1961/api_reference/index.html delete mode 100644 pulls/1961/api_reference/libsyclinterface/generated/class_dpctl_syclinterface_dpctl_accelerator_selector.html delete mode 100644 pulls/1961/api_reference/libsyclinterface/generated/class_dpctl_syclinterface_dpctl_cpu_selector.html delete mode 100644 pulls/1961/api_reference/libsyclinterface/generated/class_dpctl_syclinterface_dpctl_default_selector.html delete mode 100644 pulls/1961/api_reference/libsyclinterface/generated/class_dpctl_syclinterface_dpctl_device_selector.html delete mode 100644 pulls/1961/api_reference/libsyclinterface/generated/class_dpctl_syclinterface_dpctl_filter_selector.html delete mode 100644 pulls/1961/api_reference/libsyclinterface/generated/class_dpctl_syclinterface_dpctl_gpu_selector.html delete mode 100644 pulls/1961/api_reference/libsyclinterface/generated/enum_DPCTLGlobalMemCacheType.html delete mode 100644 pulls/1961/api_reference/libsyclinterface/generated/enum_DPCTLKernelArgType.html delete mode 100644 pulls/1961/api_reference/libsyclinterface/generated/enum_DPCTLPartitionAffinityDomainType.html delete mode 100644 pulls/1961/api_reference/libsyclinterface/generated/enum_DPCTLQueuePropertyType.html delete mode 100644 pulls/1961/api_reference/libsyclinterface/generated/enum_DPCTLSyclAspectType.html delete mode 100644 pulls/1961/api_reference/libsyclinterface/generated/enum_DPCTLSyclBackendType.html delete mode 100644 pulls/1961/api_reference/libsyclinterface/generated/enum_DPCTLSyclDeviceType.html delete mode 100644 pulls/1961/api_reference/libsyclinterface/generated/enum_DPCTLSyclEventStatusType.html delete mode 100644 pulls/1961/api_reference/libsyclinterface/generated/enum_DPCTLSyclUSMType.html delete mode 100644 pulls/1961/api_reference/libsyclinterface/generated/global.html delete mode 100644 pulls/1961/api_reference/libsyclinterface/generated/group_DeviceManager.html delete mode 100644 pulls/1961/api_reference/libsyclinterface/generated/group_PlatformManager.html delete mode 100644 pulls/1961/api_reference/libsyclinterface/generated/index.html delete mode 100644 pulls/1961/api_reference/libsyclinterface/generated/namespace_dpctl.html delete mode 100644 pulls/1961/api_reference/libsyclinterface/generated/namespace_dpctl_syclinterface.html delete mode 100644 pulls/1961/api_reference/libsyclinterface/generated/page_todo.html delete mode 100644 pulls/1961/api_reference/libsyclinterface/generated/struct_MDLocalAccessorTy.html delete mode 100644 pulls/1961/api_reference/libsyclinterface/index.html delete mode 100644 pulls/1961/beginners_guides/index.html delete mode 100644 pulls/1961/beginners_guides/installation.html delete mode 100644 pulls/1961/beginners_guides/managing_devices.html delete mode 100644 pulls/1961/beginners_guides/misc.html delete mode 100644 pulls/1961/beginners_guides/tensor_intro.html delete mode 100644 pulls/1961/contributor_guides/building.html delete mode 100644 pulls/1961/contributor_guides/index.html delete mode 100644 pulls/1961/contributor_guides/memory_ownership_sycl_interface.html delete mode 100644 pulls/1961/genindex.html delete mode 100644 pulls/1961/index.html delete mode 100644 pulls/1961/license.html delete mode 100644 pulls/1961/objects.inv delete mode 100644 pulls/1961/py-modindex.html delete mode 100644 pulls/1961/search.html delete mode 100644 pulls/1961/searchindex.js delete mode 100644 pulls/1961/user_guides/basic_concepts.html delete mode 100644 pulls/1961/user_guides/dlpack.html delete mode 100644 pulls/1961/user_guides/environment_variables.html delete mode 100644 pulls/1961/user_guides/execution_model.html delete mode 100644 pulls/1961/user_guides/index.html diff --git a/pulls/1961/_modules/dpctl.html b/pulls/1961/_modules/dpctl.html deleted file mode 100644 index 76906ffc79..0000000000 --- a/pulls/1961/_modules/dpctl.html +++ /dev/null @@ -1,960 +0,0 @@ - - - - - - - - - - - - dpctl - Data Parallel Control (dpctl) 0.19.0dev0 documentation - - - - - - - - - - - - - - - - - - - Contents - - - - - - Menu - - - - - - - - Expand - - - - - - Light mode - - - - - - - - - - - - - - Dark mode - - - - - - - Auto light/dark, in light mode - - - - - - - - - - - - - - - Auto light/dark, in dark mode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Skip to content - - - -
-
-
- -
- -
-
- -
- -
-
- -
-
-
- - - - - Back to top - -
-
- -
- -
-
-

Source code for dpctl

-#                      Data Parallel Control (dpctl)
-#
-# Copyright 2020-2025 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 . import _init_helper
-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 -del _init_helper -
-
-
-
- - -
-
- - Made with Sphinx and @pradyunsg's - - Furo - -
-
- -
-
- -
-
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/pulls/1961/_modules/dpctl/_device_selection.html b/pulls/1961/_modules/dpctl/_device_selection.html deleted file mode 100644 index 8f5747060d..0000000000 --- a/pulls/1961/_modules/dpctl/_device_selection.html +++ /dev/null @@ -1,917 +0,0 @@ - - - - - - - - - - - - dpctl._device_selection - Data Parallel Control (dpctl) 0.19.0dev0 documentation - - - - - - - - - - - - - - - - - - - Contents - - - - - - Menu - - - - - - - - Expand - - - - - - Light mode - - - - - - - - - - - - - - Dark mode - - - - - - - Auto light/dark, in light mode - - - - - - - - - - - - - - - Auto light/dark, in dark mode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Skip to content - - - -
-
-
- -
- -
-
- -
- -
-
- -
-
-
- - - - - Back to top - -
-
- -
- -
-
-

Source code for dpctl._device_selection

-#                      Data Parallel Control (dpctl)
-#
-# Copyright 2020-2025 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.
-
-import collections.abc
-from itertools import chain
-
-from ._sycl_device import SyclDevice, SyclDeviceCreationError
-from ._sycl_device_factory import get_devices
-
-
-
[docs]def select_device_with_aspects(required_aspects, excluded_aspects=None): - """Selects the root :class:`dpctl.SyclDevice` that has the highest - default selector score among devices that have all aspects in the - `required_aspects` list, and do not have any aspects in `excluded_aspects` - list. - - The list of SYCL device aspects can be found in SYCL 2020 specs: - - https://www.khronos.org/registry/SYCL/specs/sycl-2020/html/sycl-2020.html#sec:device-aspects - - :Example: - .. code-block:: python - - import dpctl - # select a GPU that supports double precision - dpctl.select_device_with_aspects(['fp64', 'gpu']) - # select non-custom device with USM shared allocations - dpctl.select_device_with_aspects( - ['usm_shared_allocations'], excluded_aspects=['custom']) - """ - if excluded_aspects is None: - excluded_aspects = [] - if isinstance(required_aspects, str): - required_aspects = [ - required_aspects, - ] - if isinstance(excluded_aspects, str): - excluded_aspects = [ - excluded_aspects, - ] - seq = collections.abc.Sequence - input_types_ok = isinstance(required_aspects, seq) and isinstance( - excluded_aspects, seq - ) - if not input_types_ok: - raise TypeError( - "Aspects are expected to be Python sequences, " - "e.g. lists, of strings" - ) - for asp in chain(required_aspects, excluded_aspects): - if not isinstance(asp, str): - raise TypeError("The list objects must be of a string type") - if not hasattr(SyclDevice, "has_aspect_" + asp): - raise AttributeError(f"The {asp} aspect is not supported in dpctl") - devs = get_devices() - max_score = 0 - selected_dev = None - - for dev in devs: - aspect_status = all( - ( - getattr(dev, "has_aspect_" + asp) is True - for asp in required_aspects - ) - ) - aspect_status = aspect_status and not ( - any( - ( - getattr(dev, "has_aspect_" + asp) is True - for asp in excluded_aspects - ) - ) - ) - if aspect_status and dev.default_selector_score > max_score: - max_score = dev.default_selector_score - selected_dev = dev - - if selected_dev is None: - raise SyclDeviceCreationError( - f"Requested device is unavailable: " - f"required_aspects={required_aspects}, " - f"excluded_aspects={excluded_aspects}" - ) - - return selected_dev
-
-
-
-
- - -
-
- - Made with Sphinx and @pradyunsg's - - Furo - -
-
- -
-
- -
-
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/pulls/1961/_modules/dpctl/_sycl_timer.html b/pulls/1961/_modules/dpctl/_sycl_timer.html deleted file mode 100644 index 9738156051..0000000000 --- a/pulls/1961/_modules/dpctl/_sycl_timer.html +++ /dev/null @@ -1,1107 +0,0 @@ - - - - - - - - - - - - dpctl._sycl_timer - Data Parallel Control (dpctl) 0.19.0dev0 documentation - - - - - - - - - - - - - - - - - - - Contents - - - - - - Menu - - - - - - - - Expand - - - - - - Light mode - - - - - - - - - - - - - - Dark mode - - - - - - - Auto light/dark, in light mode - - - - - - - - - - - - - - - Auto light/dark, in dark mode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Skip to content - - - -
-
-
- -
- -
-
- -
- -
-
- -
-
-
- - - - - Back to top - -
-
- -
- -
-
-

Source code for dpctl._sycl_timer

-#                      Data Parallel Control (dpctl)
-#
-# Copyright 2020-2025 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.
-
-import timeit
-
-from . import SyclQueue
-
-__doc__ = "This module implements :class:`dpctl.SyclTimer`."
-
-
-class HostDeviceDuration:
-    def __init__(self, host_dt, device_dt):
-        self._host_dt = host_dt
-        self._device_dt = device_dt
-
-    def __repr__(self):
-        return f"(host_dt={self._host_dt}, device_dt={self._device_dt})"
-
-    def __str__(self):
-        return f"(host_dt={self._host_dt}, device_dt={self._device_dt})"
-
-    def __iter__(self):
-        yield from [self._host_dt, self._device_dt]
-
-    @property
-    def host_dt(self):
-        return self._host_dt
-
-    @property
-    def device_dt(self):
-        return self._device_dt
-
-
-class BaseDeviceTimer:
-    __slots__ = ["queue"]
-
-    def __init__(self, sycl_queue):
-        if not isinstance(sycl_queue, SyclQueue):
-            raise TypeError(f"Expected type SyclQueue, got {type(sycl_queue)}")
-        self.queue = sycl_queue
-
-
-class QueueBarrierDeviceTimer(BaseDeviceTimer):
-    __slots__ = []
-
-    def __init__(self, sycl_queue):
-        super(QueueBarrierDeviceTimer, self).__init__(sycl_queue)
-
-    def get_event(self):
-        return self.queue.submit_barrier()
-
-
-class OrderManagerDeviceTimer(BaseDeviceTimer):
-    __slots__ = ["_order_manager", "_submit_empty_task_fn"]
-
-    def __init__(self, sycl_queue):
-        import dpctl.utils._seq_order_keeper as s_ok
-        from dpctl.utils import SequentialOrderManager as seq_om
-
-        super(OrderManagerDeviceTimer, self).__init__(sycl_queue)
-        self._order_manager = seq_om[self.queue]
-        self._submit_empty_task_fn = s_ok._submit_empty_task
-
-    def get_event(self):
-        ev = self._submit_empty_task_fn(
-            sycl_queue=self.queue, depends=self._order_manager.submitted_events
-        )
-        self._order_manager.add_event_pair(ev, ev)
-        return ev
-
-
-
[docs]class SyclTimer: - """ - Context to time execution of tasks submitted to :class:`dpctl.SyclQueue`. - - :Example: - .. code-block:: python - - import dpctl - - # Create a default SyclQueue - q = dpctl.SyclQueue(property="enable_profiling") - - # create the timer - milliseconds_sc = 1e3 - timer = dpctl.SyclTimer(time_scale = milliseconds_sc) - - untimed_code_block_1 - # use the timer - with timer(queue=q): - timed_code_block1 - - untimed_code_block_2 - - # use the timer - with timer(queue=q): - timed_code_block2 - - untimed_code_block_3 - - # retrieve elapsed times in milliseconds - wall_dt, device_dt = timer.dt - - .. note:: - The timer submits tasks to the queue at the entrance and the - exit of the context and uses profiling information from events - associated with these submissions to perform the timing. Thus - :class:`dpctl.SyclTimer` requires the queue with ``"enable_profiling"`` - property. In order to be able to collect the profiling information, - the ``dt`` property ensures that both tasks submitted by the timer - complete their execution and thus effectively synchronizes the queue. - - Execution of the above example results in the following task graph, - where each group of tasks is ordered after the one preceding it, - ``[tasks_of_untimed_block1]``, ``[timer_fence_start_task]``, - ``[tasks_of_timed_block1]``, ``[timer_fence_finish_task]``, - ``[tasks_of_untimed_block2]``, ``[timer_fence_start_task]``, - ``[tasks_of_timed_block2]``, ``[timer_fence_finish_task]``, - ``[tasks_of_untimed_block3]``. - - ``device_timer`` keyword argument controls the type of tasks submitted. - With ``"queue_barrier"`` value, queue barrier tasks are used. With - ``"order_manager"`` value, a single empty body task is inserted - and order manager (used by all `dpctl.tensor` operations) is used to - order these tasks so that they fence operations performed within - timer's context. - - Timing offloading operations that do not use the order manager with - the timer that uses ``"order_manager"`` as ``device_timer`` value - will be misleading becaused the tasks submitted by the timer will not - be ordered with respect to tasks we intend to time. - - Note, that host timer effectively measures the time of task - submissions. To measure host timer wall-time that includes execution - of submitted tasks, make sure to include synchronization point in - the timed block. - - :Example: - .. code-block:: python - - with timer(q): - timed_block - q.wait() - - Args: - host_timer (callable, optional): - A callable such that host_timer() returns current - host time in seconds. - Default: :py:func:`timeit.default_timer`. - device_timer (Literal["queue_barrier", "order_manager"], optional): - Device timing method. Default: "queue_barrier". - time_scale (Union[int, float], optional): - Ratio of one second and the unit of time-scale of interest. - Default: ``1``. - """ - -
[docs] def __init__( - self, host_timer=timeit.default_timer, device_timer=None, time_scale=1 - ): - """ - Create new instance of :class:`.SyclTimer`. - - Args: - host_timer (callable, optional) - A function that takes no arguments and returns a value - measuring time. - Default: :meth:`timeit.default_timer`. - device_timer (Literal["queue_barrier", "order_manager"], optional): - Device timing method. Default: "queue_barrier" - time_scale (Union[int, float], optional): - Scaling factor applied to durations measured by - the host_timer. Default: ``1``. - """ - self.timer = host_timer - self.time_scale = time_scale - self.queue = None - self.host_times = [] - self.bracketing_events = [] - self._context_data = list() - if device_timer is None: - device_timer = "queue_barrier" - if device_timer == "queue_barrier": - self._device_timer_class = QueueBarrierDeviceTimer - elif device_timer == "order_manager": - self._device_timer_class = OrderManagerDeviceTimer - else: - raise ValueError( - "Supported values for device_timer keyword are " - "'queue_barrier', 'order_manager', got " - f"'{device_timer}'" - ) - self._device_timer = None
- - def __call__(self, queue=None): - if isinstance(queue, SyclQueue): - if queue.has_enable_profiling: - self.queue = queue - self._device_timer = self._device_timer_class(queue) - else: - raise ValueError( - "The given queue was not created with the " - "enable_profiling property" - ) - else: - raise TypeError( - "The passed queue must have type dpctl.SyclQueue, " - f"got {type(queue)}" - ) - return self - - def __enter__(self): - _event_start = self._device_timer.get_event() - _host_start = self.timer() - self._context_data.append((_event_start, _host_start)) - return self - - def __exit__(self, *args): - _event_end = self._device_timer.get_event() - _host_end = self.timer() - _event_start, _host_start = self._context_data.pop() - self.host_times.append((_host_start, _host_end)) - self.bracketing_events.append((_event_start, _event_end)) - - @property - def dt(self): - """Returns a pair of elapsed times ``host_dt`` and - ``device_dt``. - - The ``host_dt`` is the duration as measured by the host - timer, while the ``device_dt`` is the duration as measured by - the device timer and encoded in profiling events. - - Returns: - HostDeviceDuration: - Data class with ``host_dt`` and ``device_dt`` members which - supports unpacking into a 2-tuple. - - :Example: - - .. code-block:: python - - import dpctl - from dpctl import tensor - - q = dpctl.SyclQueue(property="enable_profiling") - - device = tensor.Device.create_device(q) - timer = dpctl.SyclTimer() - - with timer(q): - x = tensor.linspace(-4, 4, num=10**6, dtype="float32") - e = tensor.exp(-0.5 * tensor.square(x)) - s = tensor.sin(2.3 * x + 0.11) - f = e * s - - host_dt, device_dt = timer.dt - - .. note:: - Since different timers are used to measure host and device - durations, one should not expect that ``host_dt`` is always - strictly greater than ``device_dt``. - - Use tracing tools like ``onetrace``, or ``unitrace`` from - `intel/pti-gpu <https://github.com/intel/pti-gpu>`_ repository - for more accurate measurements. - """ - for es, ef in self.bracketing_events: - es.wait() - ef.wait() - host_dt = sum(tf - ts for ts, tf in self.host_times) * self.time_scale - dev_dt = sum( - ef.profiling_info_start - es.profiling_info_end - for es, ef in self.bracketing_events - ) * (1e-9 * self.time_scale) - return HostDeviceDuration(host_dt, dev_dt)
-
-
-
-
- - -
-
- - Made with Sphinx and @pradyunsg's - - Furo - -
-
- -
-
- -
-
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/pulls/1961/_modules/dpctl/tensor/_array_api.html b/pulls/1961/_modules/dpctl/tensor/_array_api.html deleted file mode 100644 index a321a14220..0000000000 --- a/pulls/1961/_modules/dpctl/tensor/_array_api.html +++ /dev/null @@ -1,1052 +0,0 @@ - - - - - - - - - - - - dpctl.tensor._array_api - Data Parallel Control (dpctl) 0.19.0dev0 documentation - - - - - - - - - - - - - - - - - - - Contents - - - - - - Menu - - - - - - - - Expand - - - - - - Light mode - - - - - - - - - - - - - - Dark mode - - - - - - - Auto light/dark, in light mode - - - - - - - - - - - - - - - Auto light/dark, in dark mode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Skip to content - - - -
-
-
- -
- -
-
- -
- -
-
- -
-
-
- - - - - Back to top - -
-
- -
- -
-
-

Source code for dpctl.tensor._array_api

-#                       Data Parallel Control (dpctl)
-#
-#  Copyright 2020-2025 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.
-
-import dpctl
-import dpctl.tensor as dpt
-from dpctl.tensor._tensor_impl import (
-    default_device_complex_type,
-    default_device_fp_type,
-    default_device_index_type,
-    default_device_int_type,
-)
-
-
-def _isdtype_impl(dtype, kind):
-    if isinstance(kind, str):
-        if kind == "bool":
-            return dtype.kind == "b"
-        elif kind == "signed integer":
-            return dtype.kind == "i"
-        elif kind == "unsigned integer":
-            return dtype.kind == "u"
-        elif kind == "integral":
-            return dtype.kind in "iu"
-        elif kind == "real floating":
-            return dtype.kind == "f"
-        elif kind == "complex floating":
-            return dtype.kind == "c"
-        elif kind == "numeric":
-            return dtype.kind in "iufc"
-        else:
-            raise ValueError(f"Unrecognized data type kind: {kind}")
-
-    elif isinstance(kind, tuple):
-        return any(_isdtype_impl(dtype, k) for k in kind)
-    else:
-        raise TypeError(f"Unsupported data type kind: {kind}")
-
-
-__array_api_version__ = "2023.12"
-
-
-
[docs]class Info: - """ - namespace returned by ``__array_namespace_info__()`` - """ - - def __init__(self): - self._capabilities = { - "boolean indexing": True, - "data-dependent shapes": True, - "max dimensions": 64, - } - self._all_dtypes = { - "bool": dpt.bool, - "float32": dpt.float32, - "float64": dpt.float64, - "complex64": dpt.complex64, - "complex128": dpt.complex128, - "int8": dpt.int8, - "int16": dpt.int16, - "int32": dpt.int32, - "int64": dpt.int64, - "uint8": dpt.uint8, - "uint16": dpt.uint16, - "uint32": dpt.uint32, - "uint64": dpt.uint64, - } - -
[docs] def capabilities(self): - """ - capabilities() - - Returns a dictionary of ``dpctl``'s capabilities. - - The dictionary contains the following keys: - ``"boolean indexing"``: - boolean indicating ``dpctl``'s support of boolean indexing. - Value: ``True`` - ``"data-dependent shapes"``: - boolean indicating ``dpctl``'s support of data-dependent shapes. - Value: ``True`` - ``max dimensions``: - integer indication the maximum array dimension supported by ``dpctl``. - Value: ``64`` - - Returns: - dict: - dictionary of ``dpctl``'s capabilities - """ - return self._capabilities.copy()
- -
[docs] def default_device(self): - """ - default_device() - - Returns the default SYCL device. - """ - return dpctl.select_default_device()
- -
[docs] def default_dtypes(self, *, device=None): - """ - default_dtypes(*, device=None) - - Returns a dictionary of default data types for ``device``. - - Args: - device (Optional[:class:`dpctl.SyclDevice`, :class:`dpctl.SyclQueue`, :class:`dpctl.tensor.Device`]): - array API concept of device used in getting default data types. - ``device`` can be ``None`` (in which case the default device - is used), an instance of :class:`dpctl.SyclDevice` corresponding - to a non-partitioned SYCL device, an instance of - :class:`dpctl.SyclQueue`, or a :class:`dpctl.tensor.Device` - object returned by :attr:`dpctl.tensor.usm_ndarray.device`. - Default: ``None``. - - Returns: - dict: - a dictionary of default data types for ``device``: - - - ``"real floating"``: dtype - - ``"complex floating"``: dtype - - ``"integral"``: dtype - - ``"indexing"``: dtype - """ - if device is None: - device = dpctl.select_default_device() - elif isinstance(device, dpt.Device): - device = device.sycl_device - return { - "real floating": dpt.dtype(default_device_fp_type(device)), - "complex floating": dpt.dtype(default_device_complex_type(device)), - "integral": dpt.dtype(default_device_int_type(device)), - "indexing": dpt.dtype(default_device_index_type(device)), - }
- -
[docs] def dtypes(self, *, device=None, kind=None): - """ - dtypes(*, device=None, kind=None) - - Returns a dictionary of all Array API data types of a specified - ``kind`` supported by ``device``. - - This dictionary only includes data types supported by the - `Python Array API <https://data-apis.org/array-api/latest/>`_ - specification. - - Args: - device (Optional[:class:`dpctl.SyclDevice`, :class:`dpctl.SyclQueue`, :class:`dpctl.tensor.Device`, str]): - array API concept of device used in getting default data types. - ``device`` can be ``None`` (in which case the default device is - used), an instance of :class:`dpctl.SyclDevice` corresponding - to a non-partitioned SYCL device, an instance of - :class:`dpctl.SyclQueue`, or a :class:`dpctl.tensor.Device` - object returned by :attr:`dpctl.tensor.usm_ndarray.device`. - Default: ``None``. - - kind (Optional[str, Tuple[str, ...]]): - data type kind. - - - if ``kind`` is ``None``, returns a dictionary of all data - types supported by `device` - - if ``kind`` is a string, returns a dictionary containing the - data types belonging to the data type kind specified. - - Supports: - - * ``"bool"`` - * ``"signed integer"`` - * ``"unsigned integer"`` - * ``"integral"`` - * ``"real floating"`` - * ``"complex floating"`` - * ``"numeric"`` - - - if ``kind`` is a tuple, the tuple represents a union of - ``kind`` strings, and returns a dictionary containing data - types corresponding to the-specified union. - - Default: ``None``. - - Returns: - dict: - a dictionary of the supported data types of the specified - ``kind`` - """ - if device is None: - device = dpctl.select_default_device() - elif isinstance(device, dpt.Device): - device = device.sycl_device - _fp64 = device.has_aspect_fp64 - if kind is None: - return { - key: val - for key, val in self._all_dtypes.items() - if (key != "float64" or _fp64) - } - else: - return { - key: val - for key, val in self._all_dtypes.items() - if (key != "float64" or _fp64) and _isdtype_impl(val, kind) - }
- -
[docs] def devices(self): - """ - devices() - - Returns a list of supported devices. - """ - return dpctl.get_devices()
- - -
[docs]def __array_namespace_info__(): - """ - __array_namespace_info__() - - Returns a namespace with Array API namespace inspection utilities. - - """ - return Info()
-
-
-
-
- - -
-
- - Made with Sphinx and @pradyunsg's - - Furo - -
-
- -
-
- -
-
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/pulls/1961/_modules/dpctl/tensor/_clip.html b/pulls/1961/_modules/dpctl/tensor/_clip.html deleted file mode 100644 index 611c2ce51d..0000000000 --- a/pulls/1961/_modules/dpctl/tensor/_clip.html +++ /dev/null @@ -1,1582 +0,0 @@ - - - - - - - - - - - - dpctl.tensor._clip - Data Parallel Control (dpctl) 0.19.0dev0 documentation - - - - - - - - - - - - - - - - - - - Contents - - - - - - Menu - - - - - - - - Expand - - - - - - Light mode - - - - - - - - - - - - - - Dark mode - - - - - - - Auto light/dark, in light mode - - - - - - - - - - - - - - - Auto light/dark, in dark mode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Skip to content - - - -
-
-
- -
- -
-
- -
- -
-
- -
-
-
- - - - - Back to top - -
-
- -
- -
-
-

Source code for dpctl.tensor._clip

-#                       Data Parallel Control (dpctl)
-#
-#  Copyright 2020-2025 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.
-
-import dpctl
-import dpctl.tensor as dpt
-import dpctl.tensor._tensor_elementwise_impl as tei
-import dpctl.tensor._tensor_impl as ti
-from dpctl.tensor._copy_utils import (
-    _empty_like_orderK,
-    _empty_like_pair_orderK,
-    _empty_like_triple_orderK,
-)
-from dpctl.tensor._elementwise_common import (
-    _get_dtype,
-    _get_queue_usm_type,
-    _get_shape,
-    _validate_dtype,
-)
-from dpctl.tensor._manipulation_functions import _broadcast_shape_impl
-from dpctl.tensor._type_utils import _can_cast
-from dpctl.utils import ExecutionPlacementError, SequentialOrderManager
-
-from ._type_utils import (
-    _resolve_one_strong_one_weak_types,
-    _resolve_one_strong_two_weak_types,
-)
-
-
-def _check_clip_dtypes(res_dtype, arg1_dtype, arg2_dtype, sycl_dev):
-    "Checks if both types `arg1_dtype` and `arg2_dtype` can be"
-    "cast to `res_dtype` according to the rule `safe`"
-    if arg1_dtype == res_dtype and arg2_dtype == res_dtype:
-        return None, None, res_dtype
-
-    _fp16 = sycl_dev.has_aspect_fp16
-    _fp64 = sycl_dev.has_aspect_fp64
-    if _can_cast(arg1_dtype, res_dtype, _fp16, _fp64) and _can_cast(
-        arg2_dtype, res_dtype, _fp16, _fp64
-    ):
-        # prevent unnecessary casting
-        ret_buf1_dt = None if res_dtype == arg1_dtype else res_dtype
-        ret_buf2_dt = None if res_dtype == arg2_dtype else res_dtype
-        return ret_buf1_dt, ret_buf2_dt, res_dtype
-    else:
-        return None, None, None
-
-
-def _clip_none(x, val, out, order, _binary_fn):
-    q1, x_usm_type = x.sycl_queue, x.usm_type
-    q2, val_usm_type = _get_queue_usm_type(val)
-    if q2 is None:
-        exec_q = q1
-        res_usm_type = x_usm_type
-    else:
-        exec_q = dpctl.utils.get_execution_queue((q1, q2))
-        if exec_q is None:
-            raise ExecutionPlacementError(
-                "Execution placement can not be unambiguously inferred "
-                "from input arguments."
-            )
-        res_usm_type = dpctl.utils.get_coerced_usm_type(
-            (
-                x_usm_type,
-                val_usm_type,
-            )
-        )
-    dpctl.utils.validate_usm_type(res_usm_type, allow_none=False)
-    x_shape = x.shape
-    val_shape = _get_shape(val)
-    if not isinstance(val_shape, (tuple, list)):
-        raise TypeError(
-            "Shape of arguments can not be inferred. "
-            "Arguments are expected to be "
-            "lists, tuples, or both"
-        )
-    try:
-        res_shape = _broadcast_shape_impl(
-            [
-                x_shape,
-                val_shape,
-            ]
-        )
-    except ValueError:
-        raise ValueError(
-            "operands could not be broadcast together with shapes "
-            f"{x_shape} and {val_shape}"
-        )
-    sycl_dev = exec_q.sycl_device
-    x_dtype = x.dtype
-    val_dtype = _get_dtype(val, sycl_dev)
-    if not _validate_dtype(val_dtype):
-        raise ValueError("Operands have unsupported data types")
-
-    val_dtype = _resolve_one_strong_one_weak_types(x_dtype, val_dtype, sycl_dev)
-
-    res_dt = x.dtype
-    _fp16 = sycl_dev.has_aspect_fp16
-    _fp64 = sycl_dev.has_aspect_fp64
-    if not _can_cast(val_dtype, res_dt, _fp16, _fp64):
-        raise ValueError(
-            f"function 'clip' does not support input types "
-            f"({x_dtype}, {val_dtype}), "
-            "and the inputs could not be safely coerced to any "
-            "supported types according to the casting rule ''safe''."
-        )
-
-    orig_out = out
-    if out is not None:
-        if not isinstance(out, dpt.usm_ndarray):
-            raise TypeError(
-                f"output array must be of usm_ndarray type, got {type(out)}"
-            )
-
-        if not out.flags.writable:
-            raise ValueError("provided `out` array is read-only")
-
-        if out.shape != res_shape:
-            raise ValueError(
-                "The shape of input and output arrays are inconsistent. "
-                f"Expected output shape is {res_shape}, got {out.shape}"
-            )
-
-        if res_dt != out.dtype:
-            raise ValueError(
-                f"Output array of type {res_dt} is needed, got {out.dtype}"
-            )
-
-        if dpctl.utils.get_execution_queue((exec_q, out.sycl_queue)) is None:
-            raise ExecutionPlacementError(
-                "Input and output allocation queues are not compatible"
-            )
-
-        if ti._array_overlap(x, out):
-            if not ti._same_logical_tensors(x, out):
-                out = dpt.empty_like(out)
-
-        if isinstance(val, dpt.usm_ndarray):
-            if (
-                ti._array_overlap(val, out)
-                and not ti._same_logical_tensors(val, out)
-                and val_dtype == res_dt
-            ):
-                out = dpt.empty_like(out)
-
-    if isinstance(val, dpt.usm_ndarray):
-        val_ary = val
-    else:
-        val_ary = dpt.asarray(val, dtype=val_dtype, sycl_queue=exec_q)
-
-    if order == "A":
-        order = (
-            "F"
-            if all(
-                arr.flags.f_contiguous
-                for arr in (
-                    x,
-                    val_ary,
-                )
-            )
-            else "C"
-        )
-    if val_dtype == res_dt:
-        if out is None:
-            if order == "K":
-                out = _empty_like_pair_orderK(
-                    x, val_ary, res_dt, res_shape, res_usm_type, exec_q
-                )
-            else:
-                out = dpt.empty(
-                    res_shape,
-                    dtype=res_dt,
-                    usm_type=res_usm_type,
-                    sycl_queue=exec_q,
-                    order=order,
-                )
-        if x_shape != res_shape:
-            x = dpt.broadcast_to(x, res_shape)
-        if val_ary.shape != res_shape:
-            val_ary = dpt.broadcast_to(val_ary, res_shape)
-        _manager = SequentialOrderManager[exec_q]
-        dep_evs = _manager.submitted_events
-        ht_binary_ev, binary_ev = _binary_fn(
-            src1=x, src2=val_ary, dst=out, sycl_queue=exec_q, depends=dep_evs
-        )
-        _manager.add_event_pair(ht_binary_ev, binary_ev)
-        if not (orig_out is None or orig_out is out):
-            # Copy the out data from temporary buffer to original memory
-            ht_copy_out_ev, copy_ev = ti._copy_usm_ndarray_into_usm_ndarray(
-                src=out,
-                dst=orig_out,
-                sycl_queue=exec_q,
-                depends=[binary_ev],
-            )
-            _manager.add_event_pair(ht_copy_out_ev, copy_ev)
-            out = orig_out
-        return out
-    else:
-        if order == "K":
-            buf = _empty_like_orderK(val_ary, res_dt)
-        else:
-            buf = dpt.empty_like(val_ary, dtype=res_dt, order=order)
-        _manager = SequentialOrderManager[exec_q]
-        dep_evs = _manager.submitted_events
-        ht_copy_ev, copy_ev = ti._copy_usm_ndarray_into_usm_ndarray(
-            src=val_ary, dst=buf, sycl_queue=exec_q, depends=dep_evs
-        )
-        _manager.add_event_pair(ht_copy_ev, copy_ev)
-        if out is None:
-            if order == "K":
-                out = _empty_like_pair_orderK(
-                    x, buf, res_dt, res_shape, res_usm_type, exec_q
-                )
-            else:
-                out = dpt.empty(
-                    res_shape,
-                    dtype=res_dt,
-                    usm_type=res_usm_type,
-                    sycl_queue=exec_q,
-                    order=order,
-                )
-
-        if x_shape != res_shape:
-            x = dpt.broadcast_to(x, res_shape)
-        buf = dpt.broadcast_to(buf, res_shape)
-        ht_binary_ev, binary_ev = _binary_fn(
-            src1=x,
-            src2=buf,
-            dst=out,
-            sycl_queue=exec_q,
-            depends=[copy_ev],
-        )
-        _manager.add_event_pair(ht_binary_ev, binary_ev)
-        if not (orig_out is None or orig_out is out):
-            # Copy the out data from temporary buffer to original memory
-            ht_copy_out_ev, cpy_ev = ti._copy_usm_ndarray_into_usm_ndarray(
-                src=out,
-                dst=orig_out,
-                sycl_queue=exec_q,
-                depends=[binary_ev],
-            )
-            _manager.add_event_pair(ht_copy_out_ev, cpy_ev)
-            out = orig_out
-        return out
-
-
-
[docs]def clip(x, /, min=None, max=None, out=None, order="K"): - """clip(x, min=None, max=None, out=None, order="K") - - Clips to the range [`min_i`, `max_i`] for each element `x_i` - in `x`. - - Args: - x (usm_ndarray): Array containing elements to clip. - Must be compatible with `min` and `max` according - to broadcasting rules. - min ({None, Union[usm_ndarray, bool, int, float, complex]}, optional): - Array containing minimum values. - Must be compatible with `x` and `max` according - to broadcasting rules. - max ({None, Union[usm_ndarray, bool, int, float, complex]}, optional): - Array containing maximum values. - Must be compatible with `x` and `min` according - to broadcasting rules. - out ({None, usm_ndarray}, optional): - Output array to populate. - Array must have the correct shape and the expected data type. - order ("C","F","A","K", optional): - Memory layout of the newly output array, if parameter `out` is - `None`. - Default: "K". - - Returns: - usm_ndarray: - An array with elements clipped to the range [`min`, `max`]. - The returned array has the same data type as `x`. - """ - if not isinstance(x, dpt.usm_ndarray): - raise TypeError( - "Expected `x` to be of dpctl.tensor.usm_ndarray type, got " - f"{type(x)}" - ) - if order not in ["K", "C", "F", "A"]: - order = "K" - if x.dtype.kind in "iu": - if isinstance(min, int) and min <= dpt.iinfo(x.dtype).min: - min = None - if isinstance(max, int) and max >= dpt.iinfo(x.dtype).max: - max = None - if min is None and max is None: - exec_q = x.sycl_queue - orig_out = out - if out is not None: - if not isinstance(out, dpt.usm_ndarray): - raise TypeError( - "output array must be of usm_ndarray type, got " - f"{type(out)}" - ) - - if not out.flags.writable: - raise ValueError("provided `out` array is read-only") - - if out.shape != x.shape: - raise ValueError( - "The shape of input and output arrays are " - f"inconsistent. Expected output shape is {x.shape}, " - f"got {out.shape}" - ) - - if x.dtype != out.dtype: - raise ValueError( - f"Output array of type {x.dtype} is needed, " - f"got {out.dtype}" - ) - - if ( - dpctl.utils.get_execution_queue((exec_q, out.sycl_queue)) - is None - ): - raise ExecutionPlacementError( - "Input and output allocation queues are not compatible" - ) - - if ti._array_overlap(x, out): - if not ti._same_logical_tensors(x, out): - out = dpt.empty_like(out) - else: - return out - else: - if order == "K": - out = _empty_like_orderK(x, x.dtype) - else: - out = dpt.empty_like(x, order=order) - - _manager = SequentialOrderManager[exec_q] - dep_evs = _manager.submitted_events - ht_copy_ev, copy_ev = ti._copy_usm_ndarray_into_usm_ndarray( - src=x, dst=out, sycl_queue=exec_q, depends=dep_evs - ) - _manager.add_event_pair(ht_copy_ev, copy_ev) - if not (orig_out is None or orig_out is out): - # Copy the out data from temporary buffer to original memory - ht_copy_out_ev, cpy_ev = ti._copy_usm_ndarray_into_usm_ndarray( - src=out, - dst=orig_out, - sycl_queue=exec_q, - depends=[copy_ev], - ) - _manager.add_event_pair(ht_copy_ev, cpy_ev) - out = orig_out - return out - elif max is None: - return _clip_none(x, min, out, order, tei._maximum) - elif min is None: - return _clip_none(x, max, out, order, tei._minimum) - else: - q1, x_usm_type = x.sycl_queue, x.usm_type - q2, min_usm_type = _get_queue_usm_type(min) - q3, max_usm_type = _get_queue_usm_type(max) - if q2 is None and q3 is None: - exec_q = q1 - res_usm_type = x_usm_type - elif q3 is None: - exec_q = dpctl.utils.get_execution_queue((q1, q2)) - if exec_q is None: - raise ExecutionPlacementError( - "Execution placement can not be unambiguously inferred " - "from input arguments." - ) - res_usm_type = dpctl.utils.get_coerced_usm_type( - ( - x_usm_type, - min_usm_type, - ) - ) - elif q2 is None: - exec_q = dpctl.utils.get_execution_queue((q1, q3)) - if exec_q is None: - raise ExecutionPlacementError( - "Execution placement can not be unambiguously inferred " - "from input arguments." - ) - res_usm_type = dpctl.utils.get_coerced_usm_type( - ( - x_usm_type, - max_usm_type, - ) - ) - else: - exec_q = dpctl.utils.get_execution_queue((q1, q2, q3)) - if exec_q is None: - raise ExecutionPlacementError( - "Execution placement can not be unambiguously inferred " - "from input arguments." - ) - res_usm_type = dpctl.utils.get_coerced_usm_type( - ( - x_usm_type, - min_usm_type, - max_usm_type, - ) - ) - dpctl.utils.validate_usm_type(res_usm_type, allow_none=False) - x_shape = x.shape - min_shape = _get_shape(min) - max_shape = _get_shape(max) - if not all( - isinstance(s, (tuple, list)) - for s in ( - min_shape, - max_shape, - ) - ): - raise TypeError( - "Shape of arguments can not be inferred. " - "Arguments are expected to be " - "lists, tuples, or both" - ) - try: - res_shape = _broadcast_shape_impl( - [ - x_shape, - min_shape, - max_shape, - ] - ) - except ValueError: - raise ValueError( - "operands could not be broadcast together with shapes " - f"{x_shape}, {min_shape}, and {max_shape}" - ) - sycl_dev = exec_q.sycl_device - x_dtype = x.dtype - min_dtype = _get_dtype(min, sycl_dev) - max_dtype = _get_dtype(max, sycl_dev) - if not all(_validate_dtype(o) for o in (min_dtype, max_dtype)): - raise ValueError("Operands have unsupported data types") - - min_dtype, max_dtype = _resolve_one_strong_two_weak_types( - x_dtype, min_dtype, max_dtype, sycl_dev - ) - - buf1_dt, buf2_dt, res_dt = _check_clip_dtypes( - x_dtype, - min_dtype, - max_dtype, - sycl_dev, - ) - - if res_dt is None: - raise ValueError( - f"function '{clip}' does not support input types " - f"({x_dtype}, {min_dtype}, {max_dtype}), " - "and the inputs could not be safely coerced to any " - "supported types according to the casting rule ''safe''." - ) - - orig_out = out - if out is not None: - if not isinstance(out, dpt.usm_ndarray): - raise TypeError( - "output array must be of usm_ndarray type, got " - f"{type(out)}" - ) - - if not out.flags.writable: - raise ValueError("provided `out` array is read-only") - - if out.shape != res_shape: - raise ValueError( - "The shape of input and output arrays are " - f"inconsistent. Expected output shape is {res_shape}, " - f"got {out.shape}" - ) - - if res_dt != out.dtype: - raise ValueError( - f"Output array of type {res_dt} is needed, " - f"got {out.dtype}" - ) - - if ( - dpctl.utils.get_execution_queue((exec_q, out.sycl_queue)) - is None - ): - raise ExecutionPlacementError( - "Input and output allocation queues are not compatible" - ) - - if ti._array_overlap(x, out): - if not ti._same_logical_tensors(x, out): - out = dpt.empty_like(out) - - if isinstance(min, dpt.usm_ndarray): - if ( - ti._array_overlap(min, out) - and not ti._same_logical_tensors(min, out) - and buf1_dt is None - ): - out = dpt.empty_like(out) - - if isinstance(max, dpt.usm_ndarray): - if ( - ti._array_overlap(max, out) - and not ti._same_logical_tensors(max, out) - and buf2_dt is None - ): - out = dpt.empty_like(out) - - if isinstance(min, dpt.usm_ndarray): - a_min = min - else: - a_min = dpt.asarray(min, dtype=min_dtype, sycl_queue=exec_q) - if isinstance(max, dpt.usm_ndarray): - a_max = max - else: - a_max = dpt.asarray(max, dtype=max_dtype, sycl_queue=exec_q) - - if order == "A": - order = ( - "F" - if all( - arr.flags.f_contiguous - for arr in ( - x, - a_min, - a_max, - ) - ) - else "C" - ) - if buf1_dt is None and buf2_dt is None: - if out is None: - if order == "K": - out = _empty_like_triple_orderK( - x, - a_min, - a_max, - res_dt, - res_shape, - res_usm_type, - exec_q, - ) - else: - out = dpt.empty( - res_shape, - dtype=res_dt, - usm_type=res_usm_type, - sycl_queue=exec_q, - order=order, - ) - if x_shape != res_shape: - x = dpt.broadcast_to(x, res_shape) - if a_min.shape != res_shape: - a_min = dpt.broadcast_to(a_min, res_shape) - if a_max.shape != res_shape: - a_max = dpt.broadcast_to(a_max, res_shape) - _manager = SequentialOrderManager[exec_q] - dep_ev = _manager.submitted_events - ht_binary_ev, binary_ev = ti._clip( - src=x, - min=a_min, - max=a_max, - dst=out, - sycl_queue=exec_q, - depends=dep_ev, - ) - _manager.add_event_pair(ht_binary_ev, binary_ev) - if not (orig_out is None or orig_out is out): - # Copy the out data from temporary buffer to original memory - ht_copy_out_ev, cpy_ev = ti._copy_usm_ndarray_into_usm_ndarray( - src=out, - dst=orig_out, - sycl_queue=exec_q, - depends=[binary_ev], - ) - _manager.add_event_pair(ht_copy_out_ev, cpy_ev) - out = orig_out - return out - - elif buf1_dt is None: - if order == "K": - buf2 = _empty_like_orderK(a_max, buf2_dt) - else: - buf2 = dpt.empty_like(a_max, dtype=buf2_dt, order=order) - _manager = SequentialOrderManager[exec_q] - dep_ev = _manager.submitted_events - ht_copy_ev, copy_ev = ti._copy_usm_ndarray_into_usm_ndarray( - src=a_max, dst=buf2, sycl_queue=exec_q, depends=dep_ev - ) - _manager.add_event_pair(ht_copy_ev, copy_ev) - if out is None: - if order == "K": - out = _empty_like_triple_orderK( - x, - a_min, - buf2, - res_dt, - res_shape, - res_usm_type, - exec_q, - ) - else: - out = dpt.empty( - res_shape, - dtype=res_dt, - usm_type=res_usm_type, - sycl_queue=exec_q, - order=order, - ) - - x = dpt.broadcast_to(x, res_shape) - if a_min.shape != res_shape: - a_min = dpt.broadcast_to(a_min, res_shape) - buf2 = dpt.broadcast_to(buf2, res_shape) - ht_binary_ev, binary_ev = ti._clip( - src=x, - min=a_min, - max=buf2, - dst=out, - sycl_queue=exec_q, - depends=[copy_ev], - ) - _manager.add_event_pair(ht_binary_ev, binary_ev) - if not (orig_out is None or orig_out is out): - # Copy the out data from temporary buffer to original memory - ht_copy_out_ev, cpy_ev = ti._copy_usm_ndarray_into_usm_ndarray( - src=out, - dst=orig_out, - sycl_queue=exec_q, - depends=[binary_ev], - ) - _manager.add_event_pair(ht_copy_out_ev, cpy_ev) - out = orig_out - return out - - elif buf2_dt is None: - if order == "K": - buf1 = _empty_like_orderK(a_min, buf1_dt) - else: - buf1 = dpt.empty_like(a_min, dtype=buf1_dt, order=order) - _manager = SequentialOrderManager[exec_q] - dep_ev = _manager.submitted_events - ht_copy_ev, copy_ev = ti._copy_usm_ndarray_into_usm_ndarray( - src=a_min, dst=buf1, sycl_queue=exec_q, depends=dep_ev - ) - _manager.add_event_pair(ht_copy_ev, copy_ev) - if out is None: - if order == "K": - out = _empty_like_triple_orderK( - x, - buf1, - a_max, - res_dt, - res_shape, - res_usm_type, - exec_q, - ) - else: - out = dpt.empty( - res_shape, - dtype=res_dt, - usm_type=res_usm_type, - sycl_queue=exec_q, - order=order, - ) - - x = dpt.broadcast_to(x, res_shape) - buf1 = dpt.broadcast_to(buf1, res_shape) - if a_max.shape != res_shape: - a_max = dpt.broadcast_to(a_max, res_shape) - ht_binary_ev, binary_ev = ti._clip( - src=x, - min=buf1, - max=a_max, - dst=out, - sycl_queue=exec_q, - depends=[copy_ev], - ) - _manager.add_event_pair(ht_binary_ev, binary_ev) - if not (orig_out is None or orig_out is out): - # Copy the out data from temporary buffer to original memory - ht_copy_out_ev, cpy_ev = ti._copy_usm_ndarray_into_usm_ndarray( - src=out, - dst=orig_out, - sycl_queue=exec_q, - depends=[binary_ev], - ) - _manager.add_event_pair(ht_copy_out_ev, cpy_ev) - out = orig_out - return out - - if order == "K": - if ( - x.flags.c_contiguous - and a_min.flags.c_contiguous - and a_max.flags.c_contiguous - ): - order = "C" - elif ( - x.flags.f_contiguous - and a_min.flags.f_contiguous - and a_max.flags.f_contiguous - ): - order = "F" - if order == "K": - buf1 = _empty_like_orderK(a_min, buf1_dt) - else: - buf1 = dpt.empty_like(a_min, dtype=buf1_dt, order=order) - - _manager = SequentialOrderManager[exec_q] - dep_evs = _manager.submitted_events - ht_copy1_ev, copy1_ev = ti._copy_usm_ndarray_into_usm_ndarray( - src=a_min, dst=buf1, sycl_queue=exec_q, depends=dep_evs - ) - _manager.add_event_pair(ht_copy1_ev, copy1_ev) - if order == "K": - buf2 = _empty_like_orderK(a_max, buf2_dt) - else: - buf2 = dpt.empty_like(a_max, dtype=buf2_dt, order=order) - ht_copy2_ev, copy2_ev = ti._copy_usm_ndarray_into_usm_ndarray( - src=a_max, dst=buf2, sycl_queue=exec_q, depends=dep_evs - ) - _manager.add_event_pair(ht_copy2_ev, copy2_ev) - if out is None: - if order == "K": - out = _empty_like_triple_orderK( - x, buf1, buf2, res_dt, res_shape, res_usm_type, exec_q - ) - else: - out = dpt.empty( - res_shape, - dtype=res_dt, - usm_type=res_usm_type, - sycl_queue=exec_q, - order=order, - ) - - x = dpt.broadcast_to(x, res_shape) - buf1 = dpt.broadcast_to(buf1, res_shape) - buf2 = dpt.broadcast_to(buf2, res_shape) - ht_, clip_ev = ti._clip( - src=x, - min=buf1, - max=buf2, - dst=out, - sycl_queue=exec_q, - depends=[copy1_ev, copy2_ev], - ) - _manager.add_event_pair(ht_, clip_ev) - return out
-
-
-
-
- - -
-
- - Made with Sphinx and @pradyunsg's - - Furo - -
-
- -
-
- -
-
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/pulls/1961/_modules/dpctl/tensor/_copy_utils.html b/pulls/1961/_modules/dpctl/tensor/_copy_utils.html deleted file mode 100644 index af22f21e19..0000000000 --- a/pulls/1961/_modules/dpctl/tensor/_copy_utils.html +++ /dev/null @@ -1,1856 +0,0 @@ - - - - - - - - - - - - dpctl.tensor._copy_utils - Data Parallel Control (dpctl) 0.19.0dev0 documentation - - - - - - - - - - - - - - - - - - - Contents - - - - - - Menu - - - - - - - - Expand - - - - - - Light mode - - - - - - - - - - - - - - Dark mode - - - - - - - Auto light/dark, in light mode - - - - - - - - - - - - - - - Auto light/dark, in dark mode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Skip to content - - - -
-
-
- -
- -
-
- -
- -
-
- -
-
-
- - - - - Back to top - -
-
- -
- -
-
-

Source code for dpctl.tensor._copy_utils

-#                       Data Parallel Control (dpctl)
-#
-#  Copyright 2020-2025 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.
-import builtins
-import operator
-
-import numpy as np
-
-import dpctl
-import dpctl.memory as dpm
-import dpctl.tensor as dpt
-import dpctl.tensor._tensor_impl as ti
-import dpctl.utils
-from dpctl.tensor._data_types import _get_dtype
-from dpctl.tensor._device import normalize_queue_device
-from dpctl.tensor._type_utils import _dtype_supported_by_device_impl
-
-from ._numpy_helper import normalize_axis_index
-
-__doc__ = (
-    "Implementation module for copy- and cast- operations on "
-    ":class:`dpctl.tensor.usm_ndarray`."
-)
-
-int32_t_max = 1 + np.iinfo(np.int32).max
-
-
-def _copy_to_numpy(ary):
-    if not isinstance(ary, dpt.usm_ndarray):
-        raise TypeError(f"Expected dpctl.tensor.usm_ndarray, got {type(ary)}")
-    nb = ary.usm_data.nbytes
-    q = ary.sycl_queue
-    hh = dpm.MemoryUSMHost(nb, queue=q)
-    h = np.ndarray(nb, dtype="u1", buffer=hh).view(ary.dtype)
-    itsz = ary.itemsize
-    strides_bytes = tuple(si * itsz for si in ary.strides)
-    offset = ary._element_offset * itsz
-    # ensure that content of ary.usm_data is final
-    q.wait()
-    hh.copy_from_device(ary.usm_data)
-    return np.ndarray(
-        ary.shape,
-        dtype=ary.dtype,
-        buffer=h,
-        strides=strides_bytes,
-        offset=offset,
-    )
-
-
-def _copy_from_numpy(np_ary, usm_type="device", sycl_queue=None):
-    "Copies numpy array `np_ary` into a new usm_ndarray"
-    # This may perform a copy to meet stated requirements
-    Xnp = np.require(np_ary, requirements=["A", "E"])
-    alloc_q = normalize_queue_device(sycl_queue=sycl_queue, device=None)
-    dt = Xnp.dtype
-    if dt.char in "dD" and alloc_q.sycl_device.has_aspect_fp64 is False:
-        Xusm_dtype = (
-            dpt.dtype("float32") if dt.char == "d" else dpt.dtype("complex64")
-        )
-    else:
-        Xusm_dtype = dt
-    Xusm = dpt.empty(
-        Xnp.shape, dtype=Xusm_dtype, usm_type=usm_type, sycl_queue=sycl_queue
-    )
-    _copy_from_numpy_into(Xusm, Xnp)
-    return Xusm
-
-
-def _copy_from_numpy_into(dst, np_ary):
-    "Copies `np_ary` into `dst` of type :class:`dpctl.tensor.usm_ndarray"
-    if not isinstance(np_ary, np.ndarray):
-        raise TypeError(f"Expected numpy.ndarray, got {type(np_ary)}")
-    if not isinstance(dst, dpt.usm_ndarray):
-        raise TypeError(f"Expected usm_ndarray, got {type(dst)}")
-    if np_ary.flags["OWNDATA"]:
-        Xnp = np_ary
-    else:
-        # Determine base of input array
-        base = np_ary.base
-        while isinstance(base, np.ndarray):
-            base = base.base
-        if isinstance(base, dpm._memory._Memory):
-            # we must perform a copy, since subsequent
-            # _copy_numpy_ndarray_into_usm_ndarray is implemented using
-            # sycl::buffer, and using USM-pointers with sycl::buffer
-            # results is undefined behavior
-            Xnp = np_ary.copy()
-        else:
-            Xnp = np_ary
-    src_ary = np.broadcast_to(Xnp, dst.shape)
-    copy_q = dst.sycl_queue
-    if copy_q.sycl_device.has_aspect_fp64 is False:
-        src_ary_dt_c = src_ary.dtype.char
-        if src_ary_dt_c == "d":
-            src_ary = src_ary.astype(np.float32)
-        elif src_ary_dt_c == "D":
-            src_ary = src_ary.astype(np.complex64)
-    _manager = dpctl.utils.SequentialOrderManager[copy_q]
-    dep_ev = _manager.submitted_events
-    # synchronizing call
-    ti._copy_numpy_ndarray_into_usm_ndarray(
-        src=src_ary, dst=dst, sycl_queue=copy_q, depends=dep_ev
-    )
-
-
-
[docs]def from_numpy(np_ary, /, *, device=None, usm_type="device", sycl_queue=None): - """ - from_numpy(arg, device=None, usm_type="device", sycl_queue=None) - - Creates :class:`dpctl.tensor.usm_ndarray` from instance of - :class:`numpy.ndarray`. - - Args: - arg: - Input convertible to :class:`numpy.ndarray` - device (object): array API specification of device where the - output array is created. Device can be specified by a - a filter selector string, an instance of - :class:`dpctl.SyclDevice`, an instance of - :class:`dpctl.SyclQueue`, or an instance of - :class:`dpctl.tensor.Device`. If the value is ``None``, - returned array is created on the default-selected device. - Default: ``None`` - usm_type (str): The requested USM allocation type for the - output array. Recognized values are ``"device"``, - ``"shared"``, or ``"host"`` - sycl_queue (:class:`dpctl.SyclQueue`, optional): - A SYCL queue that determines output array allocation device - as well as execution placement of data movement operations. - The ``device`` and ``sycl_queue`` arguments - are equivalent. Only one of them should be specified. If both - are provided, they must be consistent and result in using the - same execution queue. Default: ``None`` - - The returned array has the same shape, and the same data type kind. - If the device does not support the data type of input array, a - closest support data type of the same kind may be returned, e.g. - input array of type ``float16`` may be upcast to ``float32`` if the - target device does not support 16-bit floating point type. - """ - q = normalize_queue_device(sycl_queue=sycl_queue, device=device) - return _copy_from_numpy(np_ary, usm_type=usm_type, sycl_queue=q)
- - -def to_numpy(usm_ary, /): - """ - to_numpy(usm_ary) - - Copies content of :class:`dpctl.tensor.usm_ndarray` instance ``usm_ary`` - into :class:`numpy.ndarray` instance of the same shape and same data type. - - Args: - usm_ary (usm_ndarray): - Input array - Returns: - :class:`numpy.ndarray`: - An instance of :class:`numpy.ndarray` populated with content of - ``usm_ary`` - """ - return _copy_to_numpy(usm_ary) - - -def asnumpy(usm_ary): - """ - asnumpy(usm_ary) - - Copies content of :class:`dpctl.tensor.usm_ndarray` instance ``usm_ary`` - into :class:`numpy.ndarray` instance of the same shape and same data - type. - - Args: - usm_ary (usm_ndarray): - Input array - Returns: - :class:`numpy.ndarray`: - An instance of :class:`numpy.ndarray` populated with content - of ``usm_ary`` - """ - return _copy_to_numpy(usm_ary) - - -class Dummy: - """ - Helper class with specified ``__sycl_usm_array_interface__`` attribute - """ - - def __init__(self, iface): - self.__sycl_usm_array_interface__ = iface - - -def _copy_overlapping(dst, src): - """Assumes src and dst have the same shape.""" - q = normalize_queue_device(sycl_queue=dst.sycl_queue) - tmp = dpt.usm_ndarray( - src.shape, - dtype=src.dtype, - buffer="device", - order="C", - buffer_ctor_kwargs={"queue": q}, - ) - _manager = dpctl.utils.SequentialOrderManager[q] - dep_evs = _manager.submitted_events - hcp1, cp1 = ti._copy_usm_ndarray_into_usm_ndarray( - src=src, dst=tmp, sycl_queue=q, depends=dep_evs - ) - _manager.add_event_pair(hcp1, cp1) - hcp2, cp2 = ti._copy_usm_ndarray_into_usm_ndarray( - src=tmp, dst=dst, sycl_queue=q, depends=[cp1] - ) - _manager.add_event_pair(hcp2, cp2) - - -def _copy_same_shape(dst, src): - """Assumes src and dst have the same shape.""" - # check that memory regions do not overlap - if ti._array_overlap(dst, src): - if src._pointer == dst._pointer and ( - src is dst - or (src.strides == dst.strides and src.dtype == dst.dtype) - ): - return - _copy_overlapping(src=src, dst=dst) - return - - copy_q = dst.sycl_queue - _manager = dpctl.utils.SequentialOrderManager[copy_q] - dep_evs = _manager.submitted_events - hev, cpy_ev = ti._copy_usm_ndarray_into_usm_ndarray( - src=src, dst=dst, sycl_queue=copy_q, depends=dep_evs - ) - _manager.add_event_pair(hev, cpy_ev) - - -if hasattr(np, "broadcast_shapes"): - - def _broadcast_shapes(sh1, sh2): - return np.broadcast_shapes(sh1, sh2) - -else: - - def _broadcast_shapes(sh1, sh2): - # use arrays with zero strides, whose memory footprint - # is independent of the number of array elements - return np.broadcast( - np.empty(sh1, dtype=[]), - np.empty(sh2, dtype=[]), - ).shape - - -def _broadcast_strides(X_shape, X_strides, res_ndim): - """ - Broadcasts strides to match the given dimensions; - returns tuple type strides. - """ - out_strides = [0] * res_ndim - X_shape_len = len(X_shape) - str_dim = -X_shape_len - for i in range(X_shape_len): - shape_value = X_shape[i] - if not shape_value == 1: - out_strides[str_dim] = X_strides[i] - str_dim += 1 - - return tuple(out_strides) - - -def _copy_from_usm_ndarray_to_usm_ndarray(dst, src): - if any( - not isinstance(arg, dpt.usm_ndarray) - for arg in ( - dst, - src, - ) - ): - raise TypeError( - "Both types are expected to be dpctl.tensor.usm_ndarray, " - f"got {type(dst)} and {type(src)}." - ) - - if dst.ndim == src.ndim and dst.shape == src.shape: - _copy_same_shape(dst, src) - return - - try: - common_shape = _broadcast_shapes(dst.shape, src.shape) - except ValueError as exc: - raise ValueError("Shapes of two arrays are not compatible") from exc - - if dst.size < src.size and dst.size < np.prod(common_shape): - raise ValueError("Destination is smaller ") - - if len(common_shape) > dst.ndim: - ones_count = len(common_shape) - dst.ndim - for k in range(ones_count): - if common_shape[k] != 1: - raise ValueError - common_shape = common_shape[ones_count:] - - if src.ndim < len(common_shape): - new_src_strides = _broadcast_strides( - src.shape, src.strides, len(common_shape) - ) - src_same_shape = dpt.usm_ndarray( - common_shape, - dtype=src.dtype, - buffer=src, - strides=new_src_strides, - offset=src._element_offset, - ) - elif src.ndim == len(common_shape): - new_src_strides = _broadcast_strides( - src.shape, src.strides, len(common_shape) - ) - src_same_shape = dpt.usm_ndarray( - common_shape, - dtype=src.dtype, - buffer=src, - strides=new_src_strides, - offset=src._element_offset, - ) - else: - # since broadcasting succeeded, src.ndim is greater because of - # leading sequence of ones, so we trim it - n = len(common_shape) - new_src_strides = _broadcast_strides( - src.shape[-n:], src.strides[-n:], n - ) - src_same_shape = dpt.usm_ndarray( - common_shape, - dtype=src.dtype, - buffer=src.usm_data, - strides=new_src_strides, - offset=src._element_offset, - ) - - _copy_same_shape(dst, src_same_shape) - - -def _empty_like_orderK(X, dt, usm_type=None, dev=None): - """Returns empty array like `x`, using order='K' - - For an array `x` that was obtained by permutation of a contiguous - array the returned array will have the same shape and the same - strides as `x`. - """ - if not isinstance(X, dpt.usm_ndarray): - raise TypeError(f"Expected usm_ndarray, got {type(X)}") - if usm_type is None: - usm_type = X.usm_type - if dev is None: - dev = X.device - fl = X.flags - if fl["C"] or X.size <= 1: - return dpt.empty_like( - X, dtype=dt, usm_type=usm_type, device=dev, order="C" - ) - elif fl["F"]: - return dpt.empty_like( - X, dtype=dt, usm_type=usm_type, device=dev, order="F" - ) - st = list(X.strides) - perm = sorted( - range(X.ndim), - key=lambda d: builtins.abs(st[d]) if X.shape[d] > 1 else 0, - reverse=True, - ) - inv_perm = sorted(range(X.ndim), key=lambda i: perm[i]) - sh = X.shape - sh_sorted = tuple(sh[i] for i in perm) - R = dpt.empty(sh_sorted, dtype=dt, usm_type=usm_type, device=dev, order="C") - if min(st) < 0: - st_sorted = [st[i] for i in perm] - sl = tuple( - ( - slice(None, None, -1) - if st_sorted[i] < 0 - else slice(None, None, None) - ) - for i in range(X.ndim) - ) - R = R[sl] - return dpt.permute_dims(R, inv_perm) - - -def _empty_like_pair_orderK(X1, X2, dt, res_shape, usm_type, dev): - if not isinstance(X1, dpt.usm_ndarray): - raise TypeError(f"Expected usm_ndarray, got {type(X1)}") - if not isinstance(X2, dpt.usm_ndarray): - raise TypeError(f"Expected usm_ndarray, got {type(X2)}") - nd1 = X1.ndim - nd2 = X2.ndim - if nd1 > nd2 and X1.shape == res_shape: - return _empty_like_orderK(X1, dt, usm_type, dev) - elif nd1 < nd2 and X2.shape == res_shape: - return _empty_like_orderK(X2, dt, usm_type, dev) - fl1 = X1.flags - fl2 = X2.flags - if fl1["C"] or fl2["C"]: - return dpt.empty( - res_shape, dtype=dt, usm_type=usm_type, device=dev, order="C" - ) - if fl1["F"] and fl2["F"]: - return dpt.empty( - res_shape, dtype=dt, usm_type=usm_type, device=dev, order="F" - ) - st1 = list(X1.strides) - st2 = list(X2.strides) - max_ndim = max(nd1, nd2) - st1 += [0] * (max_ndim - len(st1)) - st2 += [0] * (max_ndim - len(st2)) - sh1 = list(X1.shape) + [0] * (max_ndim - nd1) - sh2 = list(X2.shape) + [0] * (max_ndim - nd2) - perm = sorted( - range(max_ndim), - key=lambda d: ( - builtins.abs(st1[d]) if sh1[d] > 1 else 0, - builtins.abs(st2[d]) if sh2[d] > 1 else 0, - ), - reverse=True, - ) - inv_perm = sorted(range(max_ndim), key=lambda i: perm[i]) - st1_sorted = [st1[i] for i in perm] - st2_sorted = [st2[i] for i in perm] - sh = res_shape - sh_sorted = tuple(sh[i] for i in perm) - R = dpt.empty(sh_sorted, dtype=dt, usm_type=usm_type, device=dev, order="C") - if max(min(st1_sorted), min(st2_sorted)) < 0: - sl = tuple( - ( - slice(None, None, -1) - if (st1_sorted[i] < 0 and st2_sorted[i] < 0) - else slice(None, None, None) - ) - for i in range(nd1) - ) - R = R[sl] - return dpt.permute_dims(R, inv_perm) - - -def _empty_like_triple_orderK(X1, X2, X3, dt, res_shape, usm_type, dev): - if not isinstance(X1, dpt.usm_ndarray): - raise TypeError(f"Expected usm_ndarray, got {type(X1)}") - if not isinstance(X2, dpt.usm_ndarray): - raise TypeError(f"Expected usm_ndarray, got {type(X2)}") - if not isinstance(X3, dpt.usm_ndarray): - raise TypeError(f"Expected usm_ndarray, got {type(X3)}") - nd1 = X1.ndim - nd2 = X2.ndim - nd3 = X3.ndim - if X1.shape == res_shape and X2.shape == res_shape and len(res_shape) > nd3: - return _empty_like_pair_orderK(X1, X2, dt, res_shape, usm_type, dev) - elif ( - X2.shape == res_shape and X3.shape == res_shape and len(res_shape) > nd1 - ): - return _empty_like_pair_orderK(X2, X3, dt, res_shape, usm_type, dev) - elif ( - X1.shape == res_shape and X3.shape == res_shape and len(res_shape) > nd2 - ): - return _empty_like_pair_orderK(X1, X3, dt, res_shape, usm_type, dev) - fl1 = X1.flags - fl2 = X2.flags - fl3 = X3.flags - if fl1["C"] or fl2["C"] or fl3["C"]: - return dpt.empty( - res_shape, dtype=dt, usm_type=usm_type, device=dev, order="C" - ) - if fl1["F"] and fl2["F"] and fl3["F"]: - return dpt.empty( - res_shape, dtype=dt, usm_type=usm_type, device=dev, order="F" - ) - st1 = list(X1.strides) - st2 = list(X2.strides) - st3 = list(X3.strides) - max_ndim = max(nd1, nd2, nd3) - st1 += [0] * (max_ndim - len(st1)) - st2 += [0] * (max_ndim - len(st2)) - st3 += [0] * (max_ndim - len(st3)) - sh1 = list(X1.shape) + [0] * (max_ndim - nd1) - sh2 = list(X2.shape) + [0] * (max_ndim - nd2) - sh3 = list(X3.shape) + [0] * (max_ndim - nd3) - perm = sorted( - range(max_ndim), - key=lambda d: ( - builtins.abs(st1[d]) if sh1[d] > 1 else 0, - builtins.abs(st2[d]) if sh2[d] > 1 else 0, - builtins.abs(st3[d]) if sh3[d] > 1 else 0, - ), - reverse=True, - ) - inv_perm = sorted(range(max_ndim), key=lambda i: perm[i]) - st1_sorted = [st1[i] for i in perm] - st2_sorted = [st2[i] for i in perm] - st3_sorted = [st3[i] for i in perm] - sh = res_shape - sh_sorted = tuple(sh[i] for i in perm) - R = dpt.empty(sh_sorted, dtype=dt, usm_type=usm_type, device=dev, order="C") - if max(min(st1_sorted), min(st2_sorted), min(st3_sorted)) < 0: - sl = tuple( - ( - slice(None, None, -1) - if ( - st1_sorted[i] < 0 - and st2_sorted[i] < 0 - and st3_sorted[i] < 0 - ) - else slice(None, None, None) - ) - for i in range(nd1) - ) - R = R[sl] - return dpt.permute_dims(R, inv_perm) - - -
[docs]def copy(usm_ary, /, *, order="K"): - """copy(ary, order="K") - - Creates a copy of given instance of :class:`dpctl.tensor.usm_ndarray`. - - Args: - ary (usm_ndarray): - Input array - order (``"C"``, ``"F"``, ``"A"``, ``"K"``, optional): - Controls the memory layout of the output array - Returns: - usm_ndarray: - A copy of the input array. - - Memory layout of the copy is controlled by ``order`` keyword, - following NumPy's conventions. The ``order`` keywords can be - one of the following: - - .. list-table:: - - * - ``"C"`` - - C-contiguous memory layout - * - ``"F"`` - - Fortran-contiguous memory layout - * - ``"A"`` - - Fortran-contiguous if the input array is also Fortran-contiguous, - otherwise C-contiguous - * - ``"K"`` - - match the layout of ``usm_ary`` as closely as possible. - - """ - if len(order) == 0 or order[0] not in "KkAaCcFf": - raise ValueError( - "Unrecognized order keyword value, expecting 'K', 'A', 'F', or 'C'." - ) - order = order[0].upper() - if not isinstance(usm_ary, dpt.usm_ndarray): - raise TypeError( - f"Expected object of type dpt.usm_ndarray, got {type(usm_ary)}" - ) - copy_order = "C" - if order == "C": - pass - elif order == "F": - copy_order = order - elif order == "A": - if usm_ary.flags.f_contiguous: - copy_order = "F" - elif order == "K": - if usm_ary.flags.f_contiguous: - copy_order = "F" - else: - raise ValueError( - "Unrecognized value of the order keyword. " - "Recognized values are 'A', 'C', 'F', or 'K'" - ) - if order == "K": - R = _empty_like_orderK(usm_ary, usm_ary.dtype) - else: - R = dpt.usm_ndarray( - usm_ary.shape, - dtype=usm_ary.dtype, - buffer=usm_ary.usm_type, - order=copy_order, - buffer_ctor_kwargs={"queue": usm_ary.sycl_queue}, - ) - _copy_same_shape(R, usm_ary) - return R
- - -
[docs]def astype( - usm_ary, newdtype, /, *, order="K", casting="unsafe", copy=True, device=None -): - """ astype(array, new_dtype, order="K", casting="unsafe", \ - copy=True, device=None) - - Returns a copy of the :class:`dpctl.tensor.usm_ndarray`, cast to a - specified type. - - Args: - array (usm_ndarray): - An input array. - new_dtype (dtype): - The data type of the resulting array. If `None`, gives default - floating point type supported by device where the resulting array - will be located. - order ({"C", "F", "A", "K"}, optional): - Controls memory layout of the resulting array if a copy - is returned. - casting ({'no', 'equiv', 'safe', 'same_kind', 'unsafe'}, optional): - Controls what kind of data casting may occur. Please see - :meth:`numpy.ndarray.astype` for description of casting modes. - copy (bool, optional): - By default, `astype` always returns a newly allocated array. - If this keyword is set to `False`, a view of the input array - may be returned when possible. - device (object): array API specification of device where the - output array is created. Device can be specified by a - a filter selector string, an instance of - :class:`dpctl.SyclDevice`, an instance of - :class:`dpctl.SyclQueue`, or an instance of - :class:`dpctl.tensor.Device`. If the value is `None`, - returned array is created on the same device as `array`. - Default: `None`. - - Returns: - usm_ndarray: - An array with requested data type. - - A view can be returned, if possible, when `copy=False` is used. - """ - if not isinstance(usm_ary, dpt.usm_ndarray): - return TypeError( - f"Expected object of type dpt.usm_ndarray, got {type(usm_ary)}" - ) - if len(order) == 0 or order[0] not in "KkAaCcFf": - raise ValueError( - "Unrecognized order keyword value, expecting 'K', 'A', 'F', or 'C'." - ) - order = order[0].upper() - ary_dtype = usm_ary.dtype - if device is not None: - if not isinstance(device, dpctl.SyclQueue): - if isinstance(device, dpt.Device): - device = device.sycl_queue - else: - device = dpt.Device.create_device(device).sycl_queue - d = device.sycl_device - target_dtype = _get_dtype(newdtype, device) - if not _dtype_supported_by_device_impl( - target_dtype, d.has_aspect_fp16, d.has_aspect_fp64 - ): - raise ValueError( - f"Requested dtype '{target_dtype}' is not supported by the " - "target device" - ) - usm_ary = usm_ary.to_device(device) - else: - target_dtype = _get_dtype(newdtype, usm_ary.sycl_queue) - - if not dpt.can_cast(ary_dtype, target_dtype, casting=casting): - raise TypeError( - f"Can not cast from {ary_dtype} to {newdtype} " - f"according to rule {casting}." - ) - c_contig = usm_ary.flags.c_contiguous - f_contig = usm_ary.flags.f_contiguous - needs_copy = copy or not ary_dtype == target_dtype - if not needs_copy and (order != "K"): - # ensure that order="F" for C-contig input triggers copy, - # and order="C" for F-contig input triggers copy too. - # 1D arrays which are both C- and F- contig should not - # force copying for neither order="F", nor order="C", see gh-1926 - needs_copy = ( - c_contig and not f_contig and order not in ["A", "C"] - ) or (not c_contig and f_contig and order not in ["A", "F"]) - if not needs_copy: - return usm_ary - copy_order = "C" - if order == "C": - pass - elif order == "F": - copy_order = order - elif order == "A": - if usm_ary.flags.f_contiguous: - copy_order = "F" - elif order == "K": - if usm_ary.flags.f_contiguous: - copy_order = "F" - else: - raise ValueError( - "Unrecognized value of the order keyword. " - "Recognized values are 'A', 'C', 'F', or 'K'" - ) - if order == "K": - R = _empty_like_orderK(usm_ary, target_dtype) - else: - R = dpt.usm_ndarray( - usm_ary.shape, - dtype=target_dtype, - buffer=usm_ary.usm_type, - order=copy_order, - buffer_ctor_kwargs={"queue": usm_ary.sycl_queue}, - ) - _copy_from_usm_ndarray_to_usm_ndarray(R, usm_ary) - return R
- - -def _extract_impl(ary, ary_mask, axis=0): - """Extract elements of ary by applying mask starting from slot - dimension axis""" - if not isinstance(ary, dpt.usm_ndarray): - raise TypeError( - f"Expecting type dpctl.tensor.usm_ndarray, got {type(ary)}" - ) - if not isinstance(ary_mask, dpt.usm_ndarray): - raise TypeError( - f"Expecting type dpctl.tensor.usm_ndarray, got {type(ary_mask)}" - ) - dst_usm_type = dpctl.utils.get_coerced_usm_type( - (ary.usm_type, ary_mask.usm_type) - ) - exec_q = dpctl.utils.get_execution_queue( - (ary.sycl_queue, ary_mask.sycl_queue) - ) - if exec_q is None: - raise dpctl.utils.ExecutionPlacementError( - "arrays have different associated queues. " - "Use `Y.to_device(X.device)` to migrate." - ) - ary_nd = ary.ndim - pp = normalize_axis_index(operator.index(axis), ary_nd) - mask_nd = ary_mask.ndim - if pp < 0 or pp + mask_nd > ary_nd: - raise ValueError( - "Parameter p is inconsistent with input array dimensions" - ) - mask_nelems = ary_mask.size - cumsum_dt = dpt.int32 if mask_nelems < int32_t_max else dpt.int64 - cumsum = dpt.empty(mask_nelems, dtype=cumsum_dt, device=ary_mask.device) - exec_q = cumsum.sycl_queue - _manager = dpctl.utils.SequentialOrderManager[exec_q] - dep_evs = _manager.submitted_events - mask_count = ti.mask_positions( - ary_mask, cumsum, sycl_queue=exec_q, depends=dep_evs - ) - dst_shape = ary.shape[:pp] + (mask_count,) + ary.shape[pp + mask_nd :] - dst = dpt.empty( - dst_shape, dtype=ary.dtype, usm_type=dst_usm_type, device=ary.device - ) - if dst.size == 0: - return dst - hev, ev = ti._extract( - src=ary, - cumsum=cumsum, - axis_start=pp, - axis_end=pp + mask_nd, - dst=dst, - sycl_queue=exec_q, - depends=dep_evs, - ) - _manager.add_event_pair(hev, ev) - return dst - - -def _nonzero_impl(ary): - if not isinstance(ary, dpt.usm_ndarray): - raise TypeError( - f"Expecting type dpctl.tensor.usm_ndarray, got {type(ary)}" - ) - exec_q = ary.sycl_queue - usm_type = ary.usm_type - mask_nelems = ary.size - cumsum_dt = dpt.int32 if mask_nelems < int32_t_max else dpt.int64 - cumsum = dpt.empty( - mask_nelems, dtype=cumsum_dt, sycl_queue=exec_q, order="C" - ) - _manager = dpctl.utils.SequentialOrderManager[exec_q] - dep_evs = _manager.submitted_events - mask_count = ti.mask_positions( - ary, cumsum, sycl_queue=exec_q, depends=dep_evs - ) - indexes_dt = ti.default_device_index_type(exec_q.sycl_device) - indexes = dpt.empty( - (ary.ndim, mask_count), - dtype=indexes_dt, - usm_type=usm_type, - sycl_queue=exec_q, - order="C", - ) - hev, nz_ev = ti._nonzero(cumsum, indexes, ary.shape, exec_q) - res = tuple(indexes[i, :] for i in range(ary.ndim)) - _manager.add_event_pair(hev, nz_ev) - return res - - -def _take_multi_index(ary, inds, p, mode=0): - if not isinstance(ary, dpt.usm_ndarray): - raise TypeError( - f"Expecting type dpctl.tensor.usm_ndarray, got {type(ary)}" - ) - ary_nd = ary.ndim - p = normalize_axis_index(operator.index(p), ary_nd) - mode = operator.index(mode) - if mode not in [0, 1]: - raise ValueError( - "Invalid value for mode keyword, only 0 or 1 is supported" - ) - queues_ = [ - ary.sycl_queue, - ] - usm_types_ = [ - ary.usm_type, - ] - if not isinstance(inds, (list, tuple)): - inds = (inds,) - for ind in inds: - if not isinstance(ind, dpt.usm_ndarray): - raise TypeError("all elements of `ind` expected to be usm_ndarrays") - queues_.append(ind.sycl_queue) - usm_types_.append(ind.usm_type) - if ind.dtype.kind not in "ui": - raise IndexError( - "arrays used as indices must be of integer (or boolean) type" - ) - res_usm_type = dpctl.utils.get_coerced_usm_type(usm_types_) - exec_q = dpctl.utils.get_execution_queue(queues_) - if exec_q is None: - raise dpctl.utils.ExecutionPlacementError( - "Can not automatically determine where to allocate the " - "result or performance execution. " - "Use `usm_ndarray.to_device` method to migrate data to " - "be associated with the same queue." - ) - if len(inds) > 1: - ind_dt = dpt.result_type(*inds) - # ind arrays have been checked to be of integer dtype - if ind_dt.kind not in "ui": - raise ValueError( - "cannot safely promote indices to an integer data type" - ) - inds = tuple( - map( - lambda ind: ( - ind if ind.dtype == ind_dt else dpt.astype(ind, ind_dt) - ), - inds, - ) - ) - inds = dpt.broadcast_arrays(*inds) - ind0 = inds[0] - ary_sh = ary.shape - p_end = p + len(inds) - if 0 in ary_sh[p:p_end] and ind0.size != 0: - raise IndexError("cannot take non-empty indices from an empty axis") - res_shape = ary_sh[:p] + ind0.shape + ary_sh[p_end:] - res = dpt.empty( - res_shape, dtype=ary.dtype, usm_type=res_usm_type, sycl_queue=exec_q - ) - _manager = dpctl.utils.SequentialOrderManager[exec_q] - dep_ev = _manager.submitted_events - hev, take_ev = ti._take( - src=ary, - ind=inds, - dst=res, - axis_start=p, - mode=mode, - sycl_queue=exec_q, - depends=dep_ev, - ) - _manager.add_event_pair(hev, take_ev) - return res - - -def _place_impl(ary, ary_mask, vals, axis=0): - """Extract elements of ary by applying mask starting from slot - dimension axis""" - if not isinstance(ary, dpt.usm_ndarray): - raise TypeError( - f"Expecting type dpctl.tensor.usm_ndarray, got {type(ary)}" - ) - if not isinstance(ary_mask, dpt.usm_ndarray): - raise TypeError( - f"Expecting type dpctl.tensor.usm_ndarray, got {type(ary_mask)}" - ) - exec_q = dpctl.utils.get_execution_queue( - ( - ary.sycl_queue, - ary_mask.sycl_queue, - ) - ) - if exec_q is not None: - if not isinstance(vals, dpt.usm_ndarray): - vals = dpt.asarray(vals, dtype=ary.dtype, sycl_queue=exec_q) - else: - exec_q = dpctl.utils.get_execution_queue((exec_q, vals.sycl_queue)) - if exec_q is None: - raise dpctl.utils.ExecutionPlacementError( - "arrays have different associated queues. " - "Use `Y.to_device(X.device)` to migrate." - ) - ary_nd = ary.ndim - pp = normalize_axis_index(operator.index(axis), ary_nd) - mask_nd = ary_mask.ndim - if pp < 0 or pp + mask_nd > ary_nd: - raise ValueError( - "Parameter p is inconsistent with input array dimensions" - ) - mask_nelems = ary_mask.size - cumsum_dt = dpt.int32 if mask_nelems < int32_t_max else dpt.int64 - cumsum = dpt.empty(mask_nelems, dtype=cumsum_dt, device=ary_mask.device) - exec_q = cumsum.sycl_queue - _manager = dpctl.utils.SequentialOrderManager[exec_q] - dep_ev = _manager.submitted_events - mask_count = ti.mask_positions( - ary_mask, cumsum, sycl_queue=exec_q, depends=dep_ev - ) - expected_vals_shape = ( - ary.shape[:pp] + (mask_count,) + ary.shape[pp + mask_nd :] - ) - if vals.dtype == ary.dtype: - rhs = vals - else: - rhs = dpt.astype(vals, ary.dtype) - rhs = dpt.broadcast_to(rhs, expected_vals_shape) - if mask_nelems == 0: - return - dep_ev = _manager.submitted_events - hev, pl_ev = ti._place( - dst=ary, - cumsum=cumsum, - axis_start=pp, - axis_end=pp + mask_nd, - rhs=rhs, - sycl_queue=exec_q, - depends=dep_ev, - ) - _manager.add_event_pair(hev, pl_ev) - return - - -def _put_multi_index(ary, inds, p, vals, mode=0): - if not isinstance(ary, dpt.usm_ndarray): - raise TypeError( - f"Expecting type dpctl.tensor.usm_ndarray, got {type(ary)}" - ) - ary_nd = ary.ndim - p = normalize_axis_index(operator.index(p), ary_nd) - mode = operator.index(mode) - if mode not in [0, 1]: - raise ValueError( - "Invalid value for mode keyword, only 0 or 1 is supported" - ) - if isinstance(vals, dpt.usm_ndarray): - queues_ = [ary.sycl_queue, vals.sycl_queue] - usm_types_ = [ary.usm_type, vals.usm_type] - else: - queues_ = [ - ary.sycl_queue, - ] - usm_types_ = [ - ary.usm_type, - ] - if not isinstance(inds, (list, tuple)): - inds = (inds,) - for ind in inds: - if not isinstance(ind, dpt.usm_ndarray): - raise TypeError("all elements of `ind` expected to be usm_ndarrays") - queues_.append(ind.sycl_queue) - usm_types_.append(ind.usm_type) - if ind.dtype.kind not in "ui": - raise IndexError( - "arrays used as indices must be of integer (or boolean) type" - ) - vals_usm_type = dpctl.utils.get_coerced_usm_type(usm_types_) - exec_q = dpctl.utils.get_execution_queue(queues_) - if exec_q is not None: - if not isinstance(vals, dpt.usm_ndarray): - vals = dpt.asarray( - vals, dtype=ary.dtype, usm_type=vals_usm_type, sycl_queue=exec_q - ) - else: - exec_q = dpctl.utils.get_execution_queue((exec_q, vals.sycl_queue)) - if exec_q is None: - raise dpctl.utils.ExecutionPlacementError( - "Can not automatically determine where to allocate the " - "result or performance execution. " - "Use `usm_ndarray.to_device` method to migrate data to " - "be associated with the same queue." - ) - if len(inds) > 1: - ind_dt = dpt.result_type(*inds) - # ind arrays have been checked to be of integer dtype - if ind_dt.kind not in "ui": - raise ValueError( - "cannot safely promote indices to an integer data type" - ) - inds = tuple( - map( - lambda ind: ( - ind if ind.dtype == ind_dt else dpt.astype(ind, ind_dt) - ), - inds, - ) - ) - inds = dpt.broadcast_arrays(*inds) - ind0 = inds[0] - ary_sh = ary.shape - p_end = p + len(inds) - if 0 in ary_sh[p:p_end] and ind0.size != 0: - raise IndexError( - "cannot put into non-empty indices along an empty axis" - ) - expected_vals_shape = ary_sh[:p] + ind0.shape + ary_sh[p_end:] - if vals.dtype == ary.dtype: - rhs = vals - else: - rhs = dpt.astype(vals, ary.dtype) - rhs = dpt.broadcast_to(rhs, expected_vals_shape) - _manager = dpctl.utils.SequentialOrderManager[exec_q] - dep_ev = _manager.submitted_events - hev, put_ev = ti._put( - dst=ary, - ind=inds, - val=rhs, - axis_start=p, - mode=mode, - sycl_queue=exec_q, - depends=dep_ev, - ) - _manager.add_event_pair(hev, put_ev) - return -
-
-
-
- - -
-
- - Made with Sphinx and @pradyunsg's - - Furo - -
-
- -
-
- -
-
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/pulls/1961/_modules/dpctl/tensor/_ctors.html b/pulls/1961/_modules/dpctl/tensor/_ctors.html deleted file mode 100644 index 4a55e8cf0a..0000000000 --- a/pulls/1961/_modules/dpctl/tensor/_ctors.html +++ /dev/null @@ -1,2763 +0,0 @@ - - - - - - - - - - - - dpctl.tensor._ctors - Data Parallel Control (dpctl) 0.19.0dev0 documentation - - - - - - - - - - - - - - - - - - - Contents - - - - - - Menu - - - - - - - - Expand - - - - - - Light mode - - - - - - - - - - - - - - Dark mode - - - - - - - Auto light/dark, in light mode - - - - - - - - - - - - - - - Auto light/dark, in dark mode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Skip to content - - - -
-
-
- -
- -
-
- -
- -
-
- -
-
-
- - - - - Back to top - -
-
- -
- -
-
-

Source code for dpctl.tensor._ctors

-#                       Data Parallel Control (dpctl)
-#
-#  Copyright 2020-2025 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.
-
-import operator
-from numbers import Number
-
-import numpy as np
-
-import dpctl
-import dpctl.memory as dpm
-import dpctl.tensor as dpt
-import dpctl.tensor._tensor_impl as ti
-import dpctl.utils
-from dpctl.tensor._copy_utils import _empty_like_orderK
-from dpctl.tensor._data_types import _get_dtype
-from dpctl.tensor._device import normalize_queue_device
-from dpctl.tensor._usmarray import _is_object_with_buffer_protocol
-
-__doc__ = "Implementation of creation functions in :module:`dpctl.tensor`"
-
-_empty_tuple = tuple()
-_host_set = frozenset([None])
-
-
-def _array_info_dispatch(obj):
-    if isinstance(obj, dpt.usm_ndarray):
-        return obj.shape, obj.dtype, frozenset([obj.sycl_queue])
-    if isinstance(obj, np.ndarray):
-        return obj.shape, obj.dtype, _host_set
-    if isinstance(obj, range):
-        return (len(obj),), int, _host_set
-    if isinstance(obj, bool):
-        return _empty_tuple, bool, _host_set
-    if isinstance(obj, float):
-        return _empty_tuple, float, _host_set
-    if isinstance(obj, int):
-        return _empty_tuple, int, _host_set
-    if isinstance(obj, complex):
-        return _empty_tuple, complex, _host_set
-    if isinstance(
-        obj,
-        (
-            list,
-            tuple,
-        ),
-    ):
-        return _array_info_sequence(obj)
-    if _is_object_with_buffer_protocol(obj):
-        np_obj = np.array(obj)
-        return np_obj.shape, np_obj.dtype, _host_set
-    if hasattr(obj, "__sycl_usm_array_interface__"):
-        usm_ar = _usm_ndarray_from_suai(obj)
-        return usm_ar.shape, usm_ar.dtype, frozenset([usm_ar.sycl_queue])
-    raise ValueError(type(obj))
-
-
-def _array_info_sequence(li):
-    if not isinstance(li, (list, tuple, range)):
-        raise TypeError(f"Expected list, tuple, or range, got {type(li)}")
-    n = len(li)
-    dim = None
-    dt = None
-    device = frozenset()
-    for el in li:
-        el_dim, el_dt, el_dev = _array_info_dispatch(el)
-        if dim is None:
-            dim = el_dim
-            dt = np.promote_types(el_dt, el_dt)
-            device = device.union(el_dev)
-        elif el_dim == dim:
-            dt = np.promote_types(dt, el_dt)
-            device = device.union(el_dev)
-        else:
-            raise ValueError(f"Inconsistent dimensions, {dim} and {el_dim}")
-    if dim is None:
-        dim = tuple()
-        dt = float
-        device = _host_set
-    return (n,) + dim, dt, device
-
-
-def _asarray_from_usm_ndarray(
-    usm_ndary,
-    dtype=None,
-    copy=None,
-    usm_type=None,
-    sycl_queue=None,
-    order="K",
-):
-    if not isinstance(usm_ndary, dpt.usm_ndarray):
-        raise TypeError(
-            f"Expected dpctl.tensor.usm_ndarray, got {type(usm_ndary)}"
-        )
-    if dtype is None:
-        dtype = usm_ndary.dtype
-    if usm_type is None:
-        usm_type = usm_ndary.usm_type
-    if sycl_queue is not None:
-        exec_q = dpctl.utils.get_execution_queue(
-            [usm_ndary.sycl_queue, sycl_queue]
-        )
-        copy_q = normalize_queue_device(sycl_queue=sycl_queue, device=exec_q)
-    else:
-        copy_q = usm_ndary.sycl_queue
-    # Conditions for zero copy:
-    can_zero_copy = copy is not True
-    #    dtype is unchanged
-    can_zero_copy = can_zero_copy and dtype == usm_ndary.dtype
-    #    USM allocation type is unchanged
-    can_zero_copy = can_zero_copy and usm_type == usm_ndary.usm_type
-    #    sycl_queue is unchanged
-    can_zero_copy = can_zero_copy and copy_q is usm_ndary.sycl_queue
-    #    order is unchanged
-    c_contig = usm_ndary.flags.c_contiguous
-    f_contig = usm_ndary.flags.f_contiguous
-    fc_contig = usm_ndary.flags.forc
-    if can_zero_copy:
-        if order == "C" and c_contig:
-            pass
-        elif order == "F" and f_contig:
-            pass
-        elif order == "A" and fc_contig:
-            pass
-        elif order == "K":
-            pass
-        else:
-            can_zero_copy = False
-    if copy is False and can_zero_copy is False:
-        raise ValueError("asarray(..., copy=False) is not possible")
-    if can_zero_copy:
-        return usm_ndary
-    if order == "A":
-        order = "F" if f_contig and not c_contig else "C"
-    if order == "K" and fc_contig:
-        order = "C" if c_contig else "F"
-    if order == "K":
-        _ensure_native_dtype_device_support(dtype, copy_q.sycl_device)
-        res = _empty_like_orderK(usm_ndary, dtype, usm_type, copy_q)
-    else:
-        _ensure_native_dtype_device_support(dtype, copy_q.sycl_device)
-        res = dpt.usm_ndarray(
-            usm_ndary.shape,
-            dtype=dtype,
-            buffer=usm_type,
-            order=order,
-            buffer_ctor_kwargs={"queue": copy_q},
-        )
-    eq = dpctl.utils.get_execution_queue([usm_ndary.sycl_queue, copy_q])
-    if eq is not None:
-        _manager = dpctl.utils.SequentialOrderManager[eq]
-        dep_evs = _manager.submitted_events
-        hev, cpy_ev = ti._copy_usm_ndarray_into_usm_ndarray(
-            src=usm_ndary, dst=res, sycl_queue=eq, depends=dep_evs
-        )
-        _manager.add_event_pair(hev, cpy_ev)
-    else:
-        tmp = dpt.asnumpy(usm_ndary)
-        res[...] = tmp
-    return res
-
-
-def _map_to_device_dtype(dt, q):
-    dtc = dt.char
-    if dtc == "?" or np.issubdtype(dt, np.integer):
-        return dt
-    d = q.sycl_device
-    if np.issubdtype(dt, np.floating):
-        if dtc == "f":
-            return dt
-        if dtc == "d" and d.has_aspect_fp64:
-            return dt
-        if dtc == "e" and d.has_aspect_fp16:
-            return dt
-        return dpt.dtype("f4")
-    if np.issubdtype(dt, np.complexfloating):
-        if dtc == "F":
-            return dt
-        if dtc == "D" and d.has_aspect_fp64:
-            return dt
-        return dpt.dtype("c8")
-    raise RuntimeError(f"Unrecognized data type '{dt}' encountered.")
-
-
-def _usm_ndarray_from_suai(obj):
-    sua_iface = getattr(obj, "__sycl_usm_array_interface__")
-    membuf = dpm.as_usm_memory(obj)
-    ary = dpt.usm_ndarray(
-        sua_iface["shape"],
-        dtype=sua_iface["typestr"],
-        buffer=membuf,
-        strides=sua_iface.get("strides", None),
-    )
-    _data_field = sua_iface["data"]
-    if isinstance(_data_field, tuple) and len(_data_field) > 1:
-        ro_field = _data_field[1]
-    else:
-        ro_field = False
-    if ro_field:
-        ary.flags["W"] = False
-    return ary
-
-
-def _asarray_from_numpy_ndarray(
-    ary, dtype=None, usm_type=None, sycl_queue=None, order="K"
-):
-    if not isinstance(ary, np.ndarray):
-        raise TypeError(f"Expected numpy.ndarray, got {type(ary)}")
-    if usm_type is None:
-        usm_type = "device"
-    copy_q = normalize_queue_device(sycl_queue=None, device=sycl_queue)
-    if ary.dtype.char not in "?bBhHiIlLqQefdFD":
-        raise TypeError(
-            f"Numpy array of data type {ary.dtype} is not supported. "
-            "Please convert the input to an array with numeric data type."
-        )
-    if dtype is None:
-        # deduce device-representable output data type
-        dtype = _map_to_device_dtype(ary.dtype, copy_q)
-    f_contig = ary.flags["F"]
-    c_contig = ary.flags["C"]
-    fc_contig = f_contig or c_contig
-    if order == "A":
-        order = "F" if f_contig and not c_contig else "C"
-    if order == "K" and fc_contig:
-        order = "C" if c_contig else "F"
-    if order == "K":
-        # new USM allocation
-        _ensure_native_dtype_device_support(dtype, copy_q.sycl_device)
-        res = dpt.usm_ndarray(
-            ary.shape,
-            dtype=dtype,
-            buffer=usm_type,
-            order="C",
-            buffer_ctor_kwargs={"queue": copy_q},
-        )
-        original_strides = ary.strides
-        ind = sorted(
-            range(ary.ndim),
-            key=lambda i: abs(original_strides[i]),
-            reverse=True,
-        )
-        new_strides = tuple(res.strides[ind[i]] for i in ind)
-        # reuse previously made USM allocation
-        res = dpt.usm_ndarray(
-            res.shape, dtype=res.dtype, buffer=res.usm_data, strides=new_strides
-        )
-    else:
-        _ensure_native_dtype_device_support(dtype, copy_q.sycl_device)
-        res = dpt.usm_ndarray(
-            ary.shape,
-            dtype=dtype,
-            buffer=usm_type,
-            order=order,
-            buffer_ctor_kwargs={"queue": copy_q},
-        )
-    res[...] = ary
-    return res
-
-
-def _ensure_native_dtype_device_support(dtype, dev) -> None:
-    """Check that dtype is natively supported by device.
-
-    Arg:
-        dtype:
-            Elemental data-type
-        dev (:class:`dpctl.SyclDevice`):
-            The device about which the query is being made.
-    Returns:
-        None
-    Raise:
-        ValueError:
-            if device does not natively support this `dtype`.
-    """
-    if dtype in [dpt.float64, dpt.complex128] and not dev.has_aspect_fp64:
-        raise ValueError(
-            f"Device {dev.name} does not provide native support "
-            "for double-precision floating point type."
-        )
-    if (
-        dtype
-        in [
-            dpt.float16,
-        ]
-        and not dev.has_aspect_fp16
-    ):
-        raise ValueError(
-            f"Device {dev.name} does not provide native support "
-            "for half-precision floating point type."
-        )
-
-
-def _usm_types_walker(o, usm_types_list):
-    if isinstance(o, dpt.usm_ndarray):
-        usm_types_list.append(o.usm_type)
-        return
-    if hasattr(o, "__sycl_usm_array_interface__"):
-        usm_ar = _usm_ndarray_from_suai(o)
-        usm_types_list.append(usm_ar.usm_type)
-        return
-    if _is_object_with_buffer_protocol(o):
-        return
-    if isinstance(o, (int, bool, float, complex)):
-        return
-    if isinstance(o, (list, tuple, range)):
-        for el in o:
-            _usm_types_walker(el, usm_types_list)
-        return
-    raise TypeError
-
-
-def _device_copy_walker(seq_o, res, _manager):
-    if isinstance(seq_o, dpt.usm_ndarray):
-        exec_q = res.sycl_queue
-        deps = _manager.submitted_events
-        ht_ev, cpy_ev = ti._copy_usm_ndarray_into_usm_ndarray(
-            src=seq_o, dst=res, sycl_queue=exec_q, depends=deps
-        )
-        _manager.add_event_pair(ht_ev, cpy_ev)
-        return
-    if hasattr(seq_o, "__sycl_usm_array_interface__"):
-        usm_ar = _usm_ndarray_from_suai(seq_o)
-        exec_q = res.sycl_queue
-        deps = _manager.submitted_events
-        ht_ev, cpy_ev = ti._copy_usm_ndarray_into_usm_ndarray(
-            src=usm_ar, dst=res, sycl_queue=exec_q, depends=deps
-        )
-        _manager.add_event_pair(ht_ev, cpy_ev)
-        return
-    if isinstance(seq_o, (list, tuple)):
-        for i, el in enumerate(seq_o):
-            _device_copy_walker(el, res[i], _manager)
-        return
-    raise TypeError
-
-
-def _copy_through_host_walker(seq_o, usm_res):
-    if isinstance(seq_o, dpt.usm_ndarray):
-        if (
-            dpctl.utils.get_execution_queue(
-                (
-                    usm_res.sycl_queue,
-                    seq_o.sycl_queue,
-                )
-            )
-            is None
-        ):
-            usm_res[...] = dpt.asnumpy(seq_o).copy()
-            return
-        else:
-            usm_res[...] = seq_o
-    if hasattr(seq_o, "__sycl_usm_array_interface__"):
-        usm_ar = _usm_ndarray_from_suai(seq_o)
-        if (
-            dpctl.utils.get_execution_queue(
-                (
-                    usm_res.sycl_queue,
-                    usm_ar.sycl_queue,
-                )
-            )
-            is None
-        ):
-            usm_res[...] = dpt.asnumpy(usm_ar).copy()
-        else:
-            usm_res[...] = usm_ar
-        return
-    if _is_object_with_buffer_protocol(seq_o):
-        np_ar = np.asarray(seq_o)
-        usm_res[...] = np_ar
-        return
-    if isinstance(seq_o, (list, tuple)):
-        for i, el in enumerate(seq_o):
-            _copy_through_host_walker(el, usm_res[i])
-        return
-    usm_res[...] = np.asarray(seq_o)
-
-
-def _asarray_from_seq(
-    seq_obj,
-    seq_shape,
-    seq_dt,
-    alloc_q,
-    exec_q,
-    dtype=None,
-    usm_type=None,
-    order="C",
-):
-    "`seq_obj` is a sequence"
-    if usm_type is None:
-        usm_types_in_seq = []
-        _usm_types_walker(seq_obj, usm_types_in_seq)
-        usm_type = dpctl.utils.get_coerced_usm_type(usm_types_in_seq)
-    dpctl.utils.validate_usm_type(usm_type)
-    if dtype is None:
-        dtype = _map_to_device_dtype(seq_dt, alloc_q)
-    else:
-        _mapped_dt = _map_to_device_dtype(dtype, alloc_q)
-        if _mapped_dt != dtype:
-            raise ValueError(
-                f"Device {alloc_q.sycl_device} "
-                f"does not support {dtype} natively."
-            )
-        dtype = _mapped_dt
-    if order in "KA":
-        order = "C"
-    if isinstance(exec_q, dpctl.SyclQueue):
-        res = dpt.empty(
-            seq_shape,
-            dtype=dtype,
-            usm_type=usm_type,
-            sycl_queue=alloc_q,
-            order=order,
-        )
-        _manager = dpctl.utils.SequentialOrderManager[exec_q]
-        _device_copy_walker(seq_obj, res, _manager)
-        return res
-    else:
-        res = dpt.empty(
-            seq_shape,
-            dtype=dtype,
-            usm_type=usm_type,
-            sycl_queue=alloc_q,
-            order=order,
-        )
-        _copy_through_host_walker(seq_obj, res)
-        return res
-
-
-def _asarray_from_seq_single_device(
-    obj,
-    seq_shape,
-    seq_dt,
-    seq_dev,
-    dtype=None,
-    usm_type=None,
-    sycl_queue=None,
-    order="C",
-):
-    if sycl_queue is None:
-        exec_q = seq_dev
-        alloc_q = seq_dev
-    else:
-        exec_q = dpctl.utils.get_execution_queue(
-            (
-                sycl_queue,
-                seq_dev,
-            )
-        )
-        alloc_q = sycl_queue
-    return _asarray_from_seq(
-        obj,
-        seq_shape,
-        seq_dt,
-        alloc_q,
-        exec_q,
-        dtype=dtype,
-        usm_type=usm_type,
-        order=order,
-    )
-
-
-
[docs]def asarray( - obj, - /, - *, - dtype=None, - device=None, - copy=None, - usm_type=None, - sycl_queue=None, - order="K", -): - """ - Converts input object to :class:`dpctl.tensor.usm_ndarray`. - - Args: - obj: Python object to convert. Can be an instance of - :class:`dpctl.tensor.usm_ndarray`, - an object representing SYCL USM allocation and implementing - ``__sycl_usm_array_interface__`` protocol, an instance - of :class:`numpy.ndarray`, an object supporting Python buffer - protocol, a Python scalar, or a (possibly nested) sequence of - Python scalars. - dtype (data type, optional): - output array data type. If ``dtype`` is - ``None``, the output array data type is inferred from data types in - ``obj``. Default: ``None`` - copy (`bool`, optional): - boolean indicating whether or not to copy the - input. If ``True``, always creates a copy. If ``False``, the - need to copy raises :exc:`ValueError`. If ``None``, tries to reuse - existing memory allocations if possible, but allows to perform - a copy otherwise. Default: ``None`` - order (``"C"``, ``"F"``, ``"A"``, ``"K"``, optional): - memory layout of the output array. Default: ``"K"`` - device (optional): array API concept of device where the output array - is created. ``device`` can be ``None``, a oneAPI filter selector - string, an instance of :class:`dpctl.SyclDevice` corresponding to - a non-partitioned SYCL device, an instance of - :class:`dpctl.SyclQueue`, or a :class:`dpctl.tensor.Device` object - returned by :attr:`dpctl.tensor.usm_ndarray.device`. - Default: ``None`` - usm_type (``"device"``, ``"shared"``, ``"host"``, optional): - The type of SYCL USM allocation for the output array. - Default: ``"device"`` - sycl_queue (:class:`dpctl.SyclQueue`, optional): - The SYCL queue to use - for output array allocation and copying. ``sycl_queue`` and - ``device`` are complementary arguments, i.e. use one or another. - If both are specified, a :exc:`TypeError` is raised unless both - imply the same underlying SYCL queue to be used. If both are - ``None``, a cached queue targeting default-selected device is - used for allocation and population. Default: ``None`` - - Returns: - usm_ndarray: - Array created from input object. - """ - # 1. Check that copy is a valid keyword - if copy not in [None, True, False]: - raise TypeError( - "Recognized copy keyword values should be True, False, or None" - ) - # 2. Check that dtype is None, or a valid dtype - if dtype is not None: - dtype = dpt.dtype(dtype) - # 3. Validate order - if not isinstance(order, str): - raise TypeError( - f"Expected order keyword to be of type str, got {type(order)}" - ) - if len(order) == 0 or order[0] not in "KkAaCcFf": - raise ValueError( - "Unrecognized order keyword value, expecting 'K', 'A', 'F', or 'C'." - ) - order = order[0].upper() - # 4. Check that usm_type is None, or a valid value - dpctl.utils.validate_usm_type(usm_type, allow_none=True) - # 5. Normalize device/sycl_queue [keep it None if was None] - if device is not None or sycl_queue is not None: - sycl_queue = normalize_queue_device( - sycl_queue=sycl_queue, device=device - ) - - # handle instance(obj, usm_ndarray) - if isinstance(obj, dpt.usm_ndarray): - return _asarray_from_usm_ndarray( - obj, - dtype=dtype, - copy=copy, - usm_type=usm_type, - sycl_queue=sycl_queue, - order=order, - ) - if hasattr(obj, "__sycl_usm_array_interface__"): - ary = _usm_ndarray_from_suai(obj) - return _asarray_from_usm_ndarray( - ary, - dtype=dtype, - copy=copy, - usm_type=usm_type, - sycl_queue=sycl_queue, - order=order, - ) - if isinstance(obj, np.ndarray): - if copy is False: - raise ValueError( - "Converting numpy.ndarray to usm_ndarray requires a copy" - ) - return _asarray_from_numpy_ndarray( - obj, - dtype=dtype, - usm_type=usm_type, - sycl_queue=sycl_queue, - order=order, - ) - if _is_object_with_buffer_protocol(obj): - if copy is False: - raise ValueError( - f"Converting {type(obj)} to usm_ndarray requires a copy" - ) - return _asarray_from_numpy_ndarray( - np.array(obj), - dtype=dtype, - usm_type=usm_type, - sycl_queue=sycl_queue, - order=order, - ) - if isinstance(obj, (list, tuple, range)): - if copy is False: - raise ValueError( - "Converting Python sequence to usm_ndarray requires a copy" - ) - seq_shape, seq_dt, devs = _array_info_sequence(obj) - if devs == _host_set: - return _asarray_from_numpy_ndarray( - np.asarray(obj, dtype=dtype, order=order), - dtype=dtype, - usm_type=usm_type, - sycl_queue=sycl_queue, - order=order, - ) - elif len(devs) == 1: - seq_dev = list(devs)[0] - return _asarray_from_seq_single_device( - obj, - seq_shape, - seq_dt, - seq_dev, - dtype=dtype, - usm_type=usm_type, - sycl_queue=sycl_queue, - order=order, - ) - elif len(devs) > 1: - devs = [dev for dev in devs if dev is not None] - if sycl_queue is None: - if len(devs) == 1: - alloc_q = devs[0] - else: - raise dpctl.utils.ExecutionPlacementError( - "Please specify `device` or `sycl_queue` keyword " - "argument to determine where to allocate the " - "resulting array." - ) - else: - alloc_q = sycl_queue - return _asarray_from_seq( - obj, - seq_shape, - seq_dt, - alloc_q, - # force copying via host - None, - dtype=dtype, - usm_type=usm_type, - order=order, - ) - if copy is False: - raise ValueError( - f"Converting {type(obj)} to usm_ndarray requires a copy" - ) - # obj is a scalar, create 0d array - return _asarray_from_numpy_ndarray( - np.asarray(obj, dtype=dtype), - dtype=dtype, - usm_type=usm_type, - sycl_queue=sycl_queue, - order="C", - )
- - -
[docs]def empty( - shape, - *, - dtype=None, - order="C", - device=None, - usm_type="device", - sycl_queue=None, -): - """ - Creates :class:`dpctl.tensor.usm_ndarray` from uninitialized - USM allocation. - - Args: - shape (Tuple[int], int): - Dimensions of the array to be created. - dtype (optional): - data type of the array. Can be typestring, - a :class:`numpy.dtype` object, :mod:`numpy` char string, - or a NumPy scalar type. The ``None`` value creates an - array of floating point data type. Default: ``None`` - order (``"C"``, or ``F"``): - memory layout for the array. Default: ``"C"`` - device (optional): array API concept of device where the output array - is created. ``device`` can be ``None``, a oneAPI filter selector - string, an instance of :class:`dpctl.SyclDevice` corresponding to - a non-partitioned SYCL device, an instance of - :class:`dpctl.SyclQueue`, or a :class:`dpctl.tensor.Device` object - returned by :attr:`dpctl.tensor.usm_ndarray.device`. - Default: ``None`` - usm_type (``"device"``, ``"shared"``, ``"host"``, optional): - The type of SYCL USM allocation for the output array. - Default: ``"device"`` - sycl_queue (:class:`dpctl.SyclQueue`, optional): - The SYCL queue to use - for output array allocation and copying. ``sycl_queue`` and - ``device`` are complementary arguments, i.e. use one or another. - If both are specified, a :exc:`TypeError` is raised unless both - imply the same underlying SYCL queue to be used. If both are - ``None``, a cached queue targeting default-selected device is - used for allocation and population. Default: ``None`` - - Returns: - usm_ndarray: - Created empty array. - """ - if not isinstance(order, str) or len(order) == 0 or order[0] not in "CcFf": - raise ValueError( - "Unrecognized order keyword value, expecting 'F' or 'C'." - ) - order = order[0].upper() - dpctl.utils.validate_usm_type(usm_type, allow_none=False) - sycl_queue = normalize_queue_device(sycl_queue=sycl_queue, device=device) - dtype = _get_dtype(dtype, sycl_queue) - _ensure_native_dtype_device_support(dtype, sycl_queue.sycl_device) - res = dpt.usm_ndarray( - shape, - dtype=dtype, - buffer=usm_type, - order=order, - buffer_ctor_kwargs={"queue": sycl_queue}, - ) - return res
- - -def _coerce_and_infer_dt(*args, dt, sycl_queue, err_msg, allow_bool=False): - "Deduce arange type from sequence spec" - nd, seq_dt, d = _array_info_sequence(args) - if d != _host_set or nd != (len(args),): - raise ValueError(err_msg) - dt = _get_dtype(dt, sycl_queue, ref_type=seq_dt) - if np.issubdtype(dt, np.integer): - return tuple(int(v) for v in args), dt - if np.issubdtype(dt, np.floating): - return tuple(float(v) for v in args), dt - if np.issubdtype(dt, np.complexfloating): - return tuple(complex(v) for v in args), dt - if allow_bool and dt.char == "?": - return tuple(bool(v) for v in args), dt - raise ValueError(f"Data type {dt} is not supported") - - -def _round_for_arange(tmp): - k = int(tmp) - if k >= 0 and float(k) < tmp: - tmp = tmp + 1 - return tmp - - -def _get_arange_length(start, stop, step): - "Compute length of arange sequence" - span = stop - start - if hasattr(step, "__float__") and hasattr(span, "__float__"): - return _round_for_arange(span / step) - tmp = span / step - if hasattr(tmp, "__complex__"): - tmp = complex(tmp) - tmp = tmp.real - else: - tmp = float(tmp) - return _round_for_arange(tmp) - - -def _to_scalar(obj, sc_ty): - """A way to convert object to NumPy scalar type. - Raises OverflowError if obj can not be represented - using the requested scalar type. - """ - zd_arr = np.asarray(obj, dtype=sc_ty) - return zd_arr[tuple()] - - -
[docs]def arange( - start, - /, - stop=None, - step=1, - *, - dtype=None, - device=None, - usm_type="device", - sycl_queue=None, -): - """ - Returns evenly spaced values within the half-open interval [start, stop) - as a one-dimensional array. - - Args: - start: - Starting point of the interval - stop: - Ending point of the interval. Default: ``None`` - step: Increment of the returned sequence. Default: ``1`` - dtype: Output array data type. Default: ``None`` - device (optional): array API concept of device where the output array - is created. ``device`` can be ``None``, a oneAPI filter selector - string, an instance of :class:`dpctl.SyclDevice` corresponding to - a non-partitioned SYCL device, an instance of - :class:`dpctl.SyclQueue`, or a :class:`dpctl.tensor.Device` object - returned by :attr:`dpctl.tensor.usm_ndarray.device`. - Default: ``None`` - usm_type (``"device"``, ``"shared"``, ``"host"``, optional): - The type of SYCL USM allocation for the output array. - Default: ``"device"`` - sycl_queue (:class:`dpctl.SyclQueue`, optional): - The SYCL queue to use - for output array allocation and copying. ``sycl_queue`` and - ``device`` are complementary arguments, i.e. use one or another. - If both are specified, a :exc:`TypeError` is raised unless both - imply the same underlying SYCL queue to be used. If both are - ``None``, a cached queue targeting default-selected device is - used for allocation and population. Default: ``None`` - - Returns: - usm_ndarray: - Array populated with evenly spaced values. - """ - if stop is None: - stop = start - start = 0 - if step is None: - step = 1 - dpctl.utils.validate_usm_type(usm_type, allow_none=False) - sycl_queue = normalize_queue_device(sycl_queue=sycl_queue, device=device) - is_bool = False - if dtype: - is_bool = (dtype is bool) or (dpt.dtype(dtype) == dpt.bool) - _, dt = _coerce_and_infer_dt( - start, - stop, - step, - dt=dpt.int8 if is_bool else dtype, - sycl_queue=sycl_queue, - err_msg="start, stop, and step must be Python scalars", - allow_bool=False, - ) - try: - tmp = _get_arange_length(start, stop, step) - sh = max(int(tmp), 0) - except TypeError: - sh = 0 - if is_bool and sh > 2: - raise ValueError("no fill-function for boolean data type") - res = dpt.usm_ndarray( - (sh,), - dtype=dt, - buffer=usm_type, - order="C", - buffer_ctor_kwargs={"queue": sycl_queue}, - ) - sc_ty = dt.type - _first = _to_scalar(start, sc_ty) - if sh > 1: - _second = _to_scalar(start + step, sc_ty) - if dt in [dpt.uint8, dpt.uint16, dpt.uint32, dpt.uint64]: - int64_ty = dpt.int64.type - _step = int64_ty(_second) - int64_ty(_first) - else: - _step = _second - _first - _step = sc_ty(_step) - else: - _step = sc_ty(1) - _start = _first - _manager = dpctl.utils.SequentialOrderManager[sycl_queue] - # populating newly allocated array, no task dependencies - hev, lin_ev = ti._linspace_step(_start, _step, res, sycl_queue) - _manager.add_event_pair(hev, lin_ev) - if is_bool: - res_out = dpt.usm_ndarray( - (sh,), - dtype=dpt.bool, - buffer=usm_type, - order="C", - buffer_ctor_kwargs={"queue": sycl_queue}, - ) - hev_cpy, cpy_ev = ti._copy_usm_ndarray_into_usm_ndarray( - src=res, dst=res_out, sycl_queue=sycl_queue, depends=[lin_ev] - ) - _manager.add_event_pair(hev_cpy, cpy_ev) - return res_out - return res
- - -
[docs]def zeros( - shape, - *, - dtype=None, - order="C", - device=None, - usm_type="device", - sycl_queue=None, -): - """ - Returns a new :class:`dpctl.tensor.usm_ndarray` having a specified - shape and filled with zeros. - - Args: - shape (Tuple[int], int): - Dimensions of the array to be created. - dtype (optional): - data type of the array. Can be typestring, - a :class:`numpy.dtype` object, :mod:`numpy` char string, - or a NumPy scalar type. Default: ``None`` - order ("C", or "F"): - memory layout for the array. Default: ``"C"`` - device (optional): array API concept of device where the output array - is created. ``device`` can be ``None``, a oneAPI filter selector - string, an instance of :class:`dpctl.SyclDevice` corresponding to - a non-partitioned SYCL device, an instance of - :class:`dpctl.SyclQueue`, or a :class:`dpctl.tensor.Device` object - returned by :attr:`dpctl.tensor.usm_ndarray.device`. - Default: ``None`` - usm_type (``"device"``, ``"shared"``, ``"host"``, optional): - The type of SYCL USM allocation for the output array. - Default: ``"device"`` - sycl_queue (:class:`dpctl.SyclQueue`, optional): - The SYCL queue to use - for output array allocation and copying. ``sycl_queue`` and - ``device`` are complementary arguments, i.e. use one or another. - If both are specified, a :exc:`TypeError` is raised unless both - imply the same underlying SYCL queue to be used. If both are - ``None``, a cached queue targeting default-selected device is - used for allocation and population. Default: ``None`` - - Returns: - usm_ndarray: - Constructed array initialized with zeros. - """ - if not isinstance(order, str) or len(order) == 0 or order[0] not in "CcFf": - raise ValueError( - "Unrecognized order keyword value, expecting 'F' or 'C'." - ) - order = order[0].upper() - dpctl.utils.validate_usm_type(usm_type, allow_none=False) - sycl_queue = normalize_queue_device(sycl_queue=sycl_queue, device=device) - dtype = _get_dtype(dtype, sycl_queue) - _ensure_native_dtype_device_support(dtype, sycl_queue.sycl_device) - res = dpt.usm_ndarray( - shape, - dtype=dtype, - buffer=usm_type, - order=order, - buffer_ctor_kwargs={"queue": sycl_queue}, - ) - _manager = dpctl.utils.SequentialOrderManager[sycl_queue] - # populating new allocation, no dependent events - hev, zeros_ev = ti._zeros_usm_ndarray(res, sycl_queue) - _manager.add_event_pair(hev, zeros_ev) - - return res
- - -
[docs]def ones( - shape, - *, - dtype=None, - order="C", - device=None, - usm_type="device", - sycl_queue=None, -): - """ ones(shape, dtype=None, order="C", \ - device=None, usm_type="device", sycl_queue=None) - - Returns a new :class:`dpctl.tensor.usm_ndarray` having a specified - shape and filled with ones. - - Args: - shape (Tuple[int], int): - Dimensions of the array to be created. - dtype (optional): - data type of the array. Can be typestring, - a :class:`numpy.dtype` object, :mod:`numpy` char string, - or a NumPy scalar type. Default: ``None`` - order ("C", or "F"): memory layout for the array. Default: ``"C"`` - device (optional): array API concept of device where the output array - is created. ``device`` can be ``None``, a oneAPI filter selector - string, an instance of :class:`dpctl.SyclDevice` corresponding to - a non-partitioned SYCL device, an instance of - :class:`dpctl.SyclQueue`, or a :class:`dpctl.tensor.Device` object - returned by :attr:`dpctl.tensor.usm_ndarray.device`. - Default: ``None`` - usm_type (``"device"``, ``"shared"``, ``"host"``, optional): - The type of SYCL USM allocation for the output array. - Default: ``"device"`` - sycl_queue (:class:`dpctl.SyclQueue`, optional): - The SYCL queue to use - for output array allocation and copying. ``sycl_queue`` and - ``device`` are complementary arguments, i.e. use one or another. - If both are specified, a :exc:`TypeError` is raised unless both - imply the same underlying SYCL queue to be used. If both are - ``None``, a cached queue targeting default-selected device is - used for allocation and population. Default: ``None`` - - Returns: - usm_ndarray: - Created array initialized with ones. - """ - if not isinstance(order, str) or len(order) == 0 or order[0] not in "CcFf": - raise ValueError( - "Unrecognized order keyword value, expecting 'F' or 'C'." - ) - order = order[0].upper() - dpctl.utils.validate_usm_type(usm_type, allow_none=False) - sycl_queue = normalize_queue_device(sycl_queue=sycl_queue, device=device) - dtype = _get_dtype(dtype, sycl_queue) - res = dpt.usm_ndarray( - shape, - dtype=dtype, - buffer=usm_type, - order=order, - buffer_ctor_kwargs={"queue": sycl_queue}, - ) - _manager = dpctl.utils.SequentialOrderManager[sycl_queue] - # populating new allocation, no dependent events - hev, full_ev = ti._full_usm_ndarray(1, res, sycl_queue) - _manager.add_event_pair(hev, full_ev) - return res
- - -def _cast_fill_val(fill_val, dt): - """ - Casts the Python scalar `fill_val` to another Python type coercible to the - requested data type `dt`, if necessary. - """ - val_type = type(fill_val) - if val_type in [float, complex] and np.issubdtype(dt, np.integer): - return int(fill_val.real) - elif val_type is complex and np.issubdtype(dt, np.floating): - return fill_val.real - elif val_type is int and np.issubdtype(dt, np.integer): - return _to_scalar(fill_val, dt) - else: - return fill_val - - -def _validate_fill_value(fill_val): - """ - Validates that `fill_val` is a numeric or boolean scalar. - """ - # TODO: verify if `np.True_` and `np.False_` should be instances of - # Number in NumPy, like other NumPy scalars and like Python bools - # check for `np.bool_` separately as NumPy<2 has no `np.bool` - if not isinstance(fill_val, Number) and not isinstance(fill_val, np.bool_): - raise TypeError( - f"array cannot be filled with scalar of type {type(fill_val)}" - ) - - -
[docs]def full( - shape, - fill_value, - *, - dtype=None, - order="C", - device=None, - usm_type=None, - sycl_queue=None, -): - """ - Returns a new :class:`dpctl.tensor.usm_ndarray` having a specified - shape and filled with `fill_value`. - - Args: - shape (tuple): - Dimensions of the array to be created. - fill_value (int,float,complex,usm_ndarray): - fill value - dtype (optional): data type of the array. Can be typestring, - a :class:`numpy.dtype` object, :mod:`numpy` char string, - or a NumPy scalar type. Default: ``None`` - order ("C", or "F"): - memory layout for the array. Default: ``"C"`` - device (optional): array API concept of device where the output array - is created. ``device`` can be ``None``, a oneAPI filter selector - string, an instance of :class:`dpctl.SyclDevice` corresponding to - a non-partitioned SYCL device, an instance of - :class:`dpctl.SyclQueue`, or a :class:`dpctl.tensor.Device` object - returned by :attr:`dpctl.tensor.usm_ndarray.device`. - Default: ``None`` - usm_type (``"device"``, ``"shared"``, ``"host"``, optional): - The type of SYCL USM allocation for the output array. - Default: ``"device"`` - sycl_queue (:class:`dpctl.SyclQueue`, optional): - The SYCL queue to use - for output array allocation and copying. ``sycl_queue`` and - ``device`` are complementary arguments, i.e. use one or another. - If both are specified, a :exc:`TypeError` is raised unless both - imply the same underlying SYCL queue to be used. If both are - ``None``, a cached queue targeting default-selected device is - used for allocation and population. Default: ``None`` - - Returns: - usm_ndarray: - New array initialized with given value. - """ - if not isinstance(order, str) or len(order) == 0 or order[0] not in "CcFf": - raise ValueError( - "Unrecognized order keyword value, expecting 'F' or 'C'." - ) - order = order[0].upper() - dpctl.utils.validate_usm_type(usm_type, allow_none=True) - - if isinstance(fill_value, (dpt.usm_ndarray, np.ndarray, tuple, list)): - if ( - isinstance(fill_value, dpt.usm_ndarray) - and sycl_queue is None - and device is None - ): - sycl_queue = fill_value.sycl_queue - else: - sycl_queue = normalize_queue_device( - sycl_queue=sycl_queue, device=device - ) - X = dpt.asarray( - fill_value, - dtype=dtype, - order=order, - usm_type=usm_type, - sycl_queue=sycl_queue, - ) - return dpt.copy(dpt.broadcast_to(X, shape), order=order) - else: - _validate_fill_value(fill_value) - - sycl_queue = normalize_queue_device(sycl_queue=sycl_queue, device=device) - usm_type = usm_type if usm_type is not None else "device" - dtype = _get_dtype(dtype, sycl_queue, ref_type=type(fill_value)) - res = dpt.usm_ndarray( - shape, - dtype=dtype, - buffer=usm_type, - order=order, - buffer_ctor_kwargs={"queue": sycl_queue}, - ) - fill_value = _cast_fill_val(fill_value, dtype) - - _manager = dpctl.utils.SequentialOrderManager[sycl_queue] - # populating new allocation, no dependent events - hev, full_ev = ti._full_usm_ndarray(fill_value, res, sycl_queue) - _manager.add_event_pair(hev, full_ev) - return res
- - -def _normalize_order(order, arr): - """ - Utility function for processing the `order` keyword of array-like - constructors, which support `"K"` and `"A"` orders. - """ - arr_flags = arr.flags - f_contig = arr_flags["F"] - c_contig = arr_flags["C"] - if order == "A": - order = "F" if f_contig and not c_contig else "C" - if order == "K" and (f_contig or c_contig): - order = "C" if c_contig else "F" - return order - - -
[docs]def empty_like( - x, /, *, dtype=None, order="K", device=None, usm_type=None, sycl_queue=None -): - """ - Returns an uninitialized :class:`dpctl.tensor.usm_ndarray` with the - same `shape` as the input array `x`. - - Args: - x (usm_ndarray): - Input array from which to derive the output array shape. - dtype (optional): - data type of the array. Can be a typestring, - a :class:`numpy.dtype` object, NumPy char string, - or a NumPy scalar type. Default: ``None`` - order ("C", "F", "A", or "K"): - memory layout for the array. Default: ``"K"`` - device (optional): array API concept of device where the output array - is created. ``device`` can be ``None``, a oneAPI filter selector - string, an instance of :class:`dpctl.SyclDevice` corresponding to - a non-partitioned SYCL device, an instance of - :class:`dpctl.SyclQueue`, or a :class:`dpctl.tensor.Device` object - returned by :attr:`dpctl.tensor.usm_ndarray.device`. - Default: ``None`` - usm_type (``"device"``, ``"shared"``, ``"host"``, optional): - The type of SYCL USM allocation for the output array. - Default: ``"device"`` - sycl_queue (:class:`dpctl.SyclQueue`, optional): - The SYCL queue to use - for output array allocation and copying. ``sycl_queue`` and - ``device`` are complementary arguments, i.e. use one or another. - If both are specified, a :exc:`TypeError` is raised unless both - imply the same underlying SYCL queue to be used. If both are - ``None``, a cached queue targeting default-selected device is - used for allocation. Default: ``None`` - - Returns: - usm_ndarray: - Created empty array with uninitialized memory. - """ - if not isinstance(x, dpt.usm_ndarray): - raise TypeError(f"Expected instance of dpt.usm_ndarray, got {type(x)}.") - if ( - not isinstance(order, str) - or len(order) == 0 - or order[0] not in "CcFfAaKk" - ): - raise ValueError( - "Unrecognized order keyword value, expecting 'C', 'F', 'A', or 'K'." - ) - order = order[0].upper() - if dtype is None: - dtype = x.dtype - if usm_type is None: - usm_type = x.usm_type - dpctl.utils.validate_usm_type(usm_type, allow_none=False) - if device is None and sycl_queue is None: - device = x.device - sycl_queue = normalize_queue_device(sycl_queue=sycl_queue, device=device) - dtype = dpt.dtype(dtype) - order = _normalize_order(order, x) - if order == "K": - _ensure_native_dtype_device_support(dtype, sycl_queue.sycl_device) - return _empty_like_orderK(x, dtype, usm_type, sycl_queue) - else: - shape = x.shape - _ensure_native_dtype_device_support(dtype, sycl_queue.sycl_device) - res = dpt.usm_ndarray( - shape, - dtype=dtype, - buffer=usm_type, - order=order, - buffer_ctor_kwargs={"queue": sycl_queue}, - ) - return res
- - -
[docs]def zeros_like( - x, /, *, dtype=None, order="K", device=None, usm_type=None, sycl_queue=None -): - """ - Creates :class:`dpctl.tensor.usm_ndarray` from USM allocation - initialized with zeros. - - Args: - x (usm_ndarray): - Input array from which to derive the shape of the - output array. - dtype (optional): - data type of the array. Can be typestring, - a :class:`numpy.dtype` object, :mod:`numpy` char string, or a - NumPy scalar type. If `None`, output array has the same data - type as the input array. Default: ``None`` - order ("C", or "F"): - memory layout for the array. Default: ``"C"`` - device (optional): - array API concept of device where the output array - is created. ``device`` can be ``None``, a oneAPI filter selector - string, an instance of :class:`dpctl.SyclDevice` corresponding to - a non-partitioned SYCL device, an instance of - :class:`dpctl.SyclQueue`, or a :class:`dpctl.tensor.Device` object - returned by :attr:`dpctl.tensor.usm_ndarray.device`. - Default: ``None`` - usm_type (``"device"``, ``"shared"``, ``"host"``, optional): - The type of SYCL USM allocation for the output array. - Default: ``"device"`` - sycl_queue (:class:`dpctl.SyclQueue`, optional): - The SYCL queue to use - for output array allocation and copying. ``sycl_queue`` and - ``device`` are complementary arguments, i.e. use one or another. - If both are specified, a :exc:`TypeError` is raised unless both - imply the same underlying SYCL queue to be used. If both are - ``None``, a cached queue targeting default-selected device is - used for allocation and population. Default: ``None`` - - Returns: - usm_ndarray: - New array initialized with zeros. - """ - if not isinstance(x, dpt.usm_ndarray): - raise TypeError(f"Expected instance of dpt.usm_ndarray, got {type(x)}.") - if ( - not isinstance(order, str) - or len(order) == 0 - or order[0] not in "CcFfAaKk" - ): - raise ValueError( - "Unrecognized order keyword value, expecting 'C', 'F', 'A', or 'K'." - ) - order = order[0].upper() - if dtype is None: - dtype = x.dtype - if usm_type is None: - usm_type = x.usm_type - dpctl.utils.validate_usm_type(usm_type, allow_none=False) - if device is None and sycl_queue is None: - device = x.device - sycl_queue = normalize_queue_device(sycl_queue=sycl_queue, device=device) - dtype = dpt.dtype(dtype) - order = _normalize_order(order, x) - if order == "K": - _ensure_native_dtype_device_support(dtype, sycl_queue.sycl_device) - res = _empty_like_orderK(x, dtype, usm_type, sycl_queue) - _manager = dpctl.utils.SequentialOrderManager[sycl_queue] - # populating new allocation, no dependent events - hev, full_ev = ti._full_usm_ndarray(0, res, sycl_queue) - _manager.add_event_pair(hev, full_ev) - return res - else: - _ensure_native_dtype_device_support(dtype, sycl_queue.sycl_device) - sh = x.shape - return zeros( - sh, - dtype=dtype, - order=order, - device=device, - usm_type=usm_type, - sycl_queue=sycl_queue, - )
- - -
[docs]def ones_like( - x, /, *, dtype=None, order="K", device=None, usm_type=None, sycl_queue=None -): - """ - Returns a new :class:`dpctl.tensor.usm_ndarray` filled with ones and - having the same `shape` as the input array `x`. - - Args: - x (usm_ndarray): - Input array from which to derive the output array shape - dtype (optional): - data type of the array. Can be typestring, - a :class:`numpy.dtype` object, :mod:`numpy` char string, - or a NumPy scalar type. Default: `None` - order ("C", "F", "A", or "K"): - memory layout for the array. Default: ``"C"`` - device (optional): - array API concept of device where the output array - is created. ``device`` can be ``None``, a oneAPI filter selector - string, an instance of :class:`dpctl.SyclDevice` corresponding to - a non-partitioned SYCL device, an instance of - :class:`dpctl.SyclQueue`, or a :class:`dpctl.tensor.Device` object - returned by :attr:`dpctl.tensor.usm_ndarray.device`. - Default: ``None`` - usm_type (``"device"``, ``"shared"``, ``"host"``, optional): - The type of SYCL USM allocation for the output array. - Default: ``"device"`` - sycl_queue (:class:`dpctl.SyclQueue`, optional): - The SYCL queue to use - for output array allocation and copying. ``sycl_queue`` and - ``device`` are complementary arguments, i.e. use one or another. - If both are specified, a :exc:`TypeError` is raised unless both - imply the same underlying SYCL queue to be used. If both are - ``None``, a cached queue targeting default-selected device is - used for allocation and population. Default: ``None`` - - Returns: - usm_ndarray: - New array initialized with ones. - """ - if not isinstance(x, dpt.usm_ndarray): - raise TypeError(f"Expected instance of dpt.usm_ndarray, got {type(x)}.") - if ( - not isinstance(order, str) - or len(order) == 0 - or order[0] not in "CcFfAaKk" - ): - raise ValueError( - "Unrecognized order keyword value, expecting 'C', 'F', 'A', or 'K'." - ) - order = order[0].upper() - if dtype is None: - dtype = x.dtype - if usm_type is None: - usm_type = x.usm_type - dpctl.utils.validate_usm_type(usm_type, allow_none=False) - if device is None and sycl_queue is None: - device = x.device - sycl_queue = normalize_queue_device(sycl_queue=sycl_queue, device=device) - dtype = dpt.dtype(dtype) - order = _normalize_order(order, x) - if order == "K": - _ensure_native_dtype_device_support(dtype, sycl_queue.sycl_device) - res = _empty_like_orderK(x, dtype, usm_type, sycl_queue) - _manager = dpctl.utils.SequentialOrderManager[sycl_queue] - # populating new allocation, no dependent events - hev, full_ev = ti._full_usm_ndarray(1, res, sycl_queue) - _manager.add_event_pair(hev, full_ev) - return res - else: - sh = x.shape - return ones( - sh, - dtype=dtype, - order=order, - device=device, - usm_type=usm_type, - sycl_queue=sycl_queue, - )
- - -
[docs]def full_like( - x, - /, - fill_value, - *, - dtype=None, - order="K", - device=None, - usm_type=None, - sycl_queue=None, -): - """ full_like(x, fill_value, dtype=None, order="K", \ - device=None, usm_type=None, sycl_queue=None) - - Returns a new :class:`dpctl.tensor.usm_ndarray` filled with `fill_value` - and having the same `shape` as the input array `x`. - - Args: - x (usm_ndarray): Input array from which to derive the output array - shape. - fill_value: the value to fill output array with - dtype (optional): - data type of the array. Can be typestring, - a :class:`numpy.dtype` object, :mod:`numpy` char string, or a - NumPy scalar type. If ``dtype`` is ``None``, the output array data - type is inferred from ``x``. Default: ``None`` - order ("C", "F", "A", or "K"): - memory layout for the array. Default: ``"K"`` - device (optional): - array API concept of device where the output array - is created. ``device`` can be ``None``, a oneAPI filter selector - string, an instance of :class:`dpctl.SyclDevice` corresponding to - a non-partitioned SYCL device, an instance of - :class:`dpctl.SyclQueue`, or a :class:`dpctl.tensor.Device` object - returned by :attr:`dpctl.tensor.usm_ndarray.device`. - Default: ``None`` - usm_type (``"device"``, ``"shared"``, ``"host"``, optional): - The type of SYCL USM allocation for the output array. - Default: ``"device"`` - sycl_queue (:class:`dpctl.SyclQueue`, optional): - The SYCL queue to use - for output array allocation and copying. ``sycl_queue`` and - ``device`` are complementary arguments, i.e. use one or another. - If both are specified, a :exc:`TypeError` is raised unless both - imply the same underlying SYCL queue to be used. If both are - ``None``, a cached queue targeting default-selected device is - used for allocation and population. Default: ``None`` - - Returns: - usm_ndarray: - New array initialized with given value. - """ - if not isinstance(x, dpt.usm_ndarray): - raise TypeError(f"Expected instance of dpt.usm_ndarray, got {type(x)}.") - if ( - not isinstance(order, str) - or len(order) == 0 - or order[0] not in "CcFfAaKk" - ): - raise ValueError( - "Unrecognized order keyword value, expecting 'C', 'F', 'A', or 'K'." - ) - order = order[0].upper() - if dtype is None: - dtype = x.dtype - if usm_type is None: - usm_type = x.usm_type - dpctl.utils.validate_usm_type(usm_type, allow_none=False) - if device is None and sycl_queue is None: - device = x.device - sycl_queue = normalize_queue_device(sycl_queue=sycl_queue, device=device) - sh = x.shape - dtype = dpt.dtype(dtype) - order = _normalize_order(order, x) - if order == "K": - _ensure_native_dtype_device_support(dtype, sycl_queue.sycl_device) - if isinstance(fill_value, (dpt.usm_ndarray, np.ndarray, tuple, list)): - X = dpt.asarray( - fill_value, - dtype=dtype, - order=order, - usm_type=usm_type, - sycl_queue=sycl_queue, - ) - X = dpt.broadcast_to(X, sh) - res = _empty_like_orderK(x, dtype, usm_type, sycl_queue) - _manager = dpctl.utils.SequentialOrderManager[sycl_queue] - # order copy after tasks populating X - dep_evs = _manager.submitted_events - hev, copy_ev = ti._copy_usm_ndarray_into_usm_ndarray( - src=X, dst=res, sycl_queue=sycl_queue, depends=dep_evs - ) - _manager.add_event_pair(hev, copy_ev) - return res - else: - _validate_fill_value(fill_value) - - dtype = _get_dtype(dtype, sycl_queue, ref_type=type(fill_value)) - res = _empty_like_orderK(x, dtype, usm_type, sycl_queue) - fill_value = _cast_fill_val(fill_value, dtype) - _manager = dpctl.utils.SequentialOrderManager[sycl_queue] - # populating new allocation, no dependent events - hev, full_ev = ti._full_usm_ndarray(fill_value, res, sycl_queue) - _manager.add_event_pair(hev, full_ev) - return res - else: - return full( - sh, - fill_value, - dtype=dtype, - order=order, - device=device, - usm_type=usm_type, - sycl_queue=sycl_queue, - )
- - -
[docs]def linspace( - start, - stop, - /, - num, - *, - dtype=None, - device=None, - endpoint=True, - sycl_queue=None, - usm_type="device", -): - """ - linspace(start, stop, num, dtype=None, device=None, endpoint=True, \ - sycl_queue=None, usm_type="device") - - Returns :class:`dpctl.tensor.usm_ndarray` array populated with - evenly spaced numbers of specified interval. - - Args: - start: - the start of the interval. - stop: - the end of the interval. If the ``endpoint`` is ``False``, the - function generates ``num+1`` evenly spaced points starting - with ``start`` and ending with ``stop`` and exclude the - ``stop`` from the returned array such that the returned array - consists of evenly spaced numbers over the half-open interval - ``[start, stop)``. If ``endpoint`` is ``True``, the output - array consists of evenly spaced numbers over the closed - interval ``[start, stop]``. Default: ``True`` - num (int): - number of samples. Must be a non-negative integer; otherwise, - the function raises ``ValueError`` exception. - dtype: - output array data type. Should be a floating data type. - If ``dtype`` is ``None``, the output array must be the default - floating point data type for target device. - Default: ``None`` - device (optional): - array API concept of device where the output array - is created. ``device`` can be ``None``, a oneAPI filter selector - string, an instance of :class:`dpctl.SyclDevice` corresponding to - a non-partitioned SYCL device, an instance of - :class:`dpctl.SyclQueue`, or a :class:`dpctl.tensor.Device` object - returned by :attr:`dpctl.tensor.usm_ndarray.device`. - Default: ``None`` - usm_type (``"device"``, ``"shared"``, ``"host"``, optional): - The type of SYCL USM allocation for the output array. - Default: ``"device"`` - sycl_queue (:class:`dpctl.SyclQueue`, optional): - The SYCL queue to use - for output array allocation and copying. ``sycl_queue`` and - ``device`` are complementary arguments, i.e. use one or another. - If both are specified, a :exc:`TypeError` is raised unless both - imply the same underlying SYCL queue to be used. If both are - ``None``, a cached queue targeting default-selected device is - used for allocation and population. Default: ``None`` - endpoint: boolean indicating whether to include ``stop`` in the - interval. Default: ``True`` - - Returns: - usm_ndarray: - Array populated with evenly spaced numbers in the requested - interval. - """ - sycl_queue = normalize_queue_device(sycl_queue=sycl_queue, device=device) - dpctl.utils.validate_usm_type(usm_type, allow_none=False) - if endpoint not in [True, False]: - raise TypeError("endpoint keyword argument must be of boolean type") - num = operator.index(num) - if num < 0: - raise ValueError("Number of points must be non-negative") - _, dt = _coerce_and_infer_dt( - start, - stop, - dt=dtype, - sycl_queue=sycl_queue, - err_msg="start and stop must be Python scalars.", - allow_bool=True, - ) - int_dt = None - if np.issubdtype(dt, np.integer): - if dtype is not None: - int_dt = dt - dt = ti.default_device_fp_type(sycl_queue) - dt = dpt.dtype(dt) - start = float(start) - stop = float(stop) - res = dpt.empty(num, dtype=dt, usm_type=usm_type, sycl_queue=sycl_queue) - _manager = dpctl.utils.SequentialOrderManager[sycl_queue] - hev, la_ev = ti._linspace_affine( - start, stop, dst=res, include_endpoint=endpoint, sycl_queue=sycl_queue - ) - _manager.add_event_pair(hev, la_ev) - return res if int_dt is None else dpt.astype(res, int_dt)
- - -
[docs]def eye( - n_rows, - n_cols=None, - /, - *, - k=0, - dtype=None, - order="C", - device=None, - usm_type="device", - sycl_queue=None, -): - """ - eye(n_rows, n_cols=None, /, *, k=0, dtype=None, \ - device=None, usm_type="device", sycl_queue=None) - - Creates :class:`dpctl.tensor.usm_ndarray` with ones on the `k`-th - diagonal. - - Args: - n_rows (int): - number of rows in the output array. - n_cols (int, optional): - number of columns in the output array. If ``None``, - ``n_cols = n_rows``. Default: ``None`` - k (int): - index of the diagonal, with ``0`` as the main diagonal. - A positive value of ``k`` is a superdiagonal, a negative value - is a subdiagonal. - Raises :exc:`TypeError` if ``k`` is not an integer. - Default: ``0`` - dtype (optional): - data type of the array. Can be typestring, - a :class:`numpy.dtype` object, :mod:`numpy` char string, or - a NumPy scalar type. Default: ``None`` - order ("C" or "F"): - memory layout for the array. Default: ``"C"`` - device (optional): - array API concept of device where the output array - is created. ``device`` can be ``None``, a oneAPI filter selector - string, an instance of :class:`dpctl.SyclDevice` corresponding to - a non-partitioned SYCL device, an instance of - :class:`dpctl.SyclQueue`, or a :class:`dpctl.tensor.Device` object - returned by :attr:`dpctl.tensor.usm_ndarray.device`. - Default: ``None`` - usm_type (``"device"``, ``"shared"``, ``"host"``, optional): - The type of SYCL USM allocation for the output array. - Default: ``"device"`` - sycl_queue (:class:`dpctl.SyclQueue`, optional): - The SYCL queue to use - for output array allocation and copying. ``sycl_queue`` and - ``device`` are complementary arguments, i.e. use one or another. - If both are specified, a :exc:`TypeError` is raised unless both - imply the same underlying SYCL queue to be used. If both are - ``None``, a cached queue targeting default-selected device is - used for allocation and population. Default: ``None`` - - Returns: - usm_ndarray: - A diagonal matrix. - """ - if not isinstance(order, str) or len(order) == 0 or order[0] not in "CcFf": - raise ValueError( - "Unrecognized order keyword value, expecting 'F' or 'C'." - ) - order = order[0].upper() - n_rows = operator.index(n_rows) - n_cols = n_rows if n_cols is None else operator.index(n_cols) - k = operator.index(k) - if k >= n_cols or -k >= n_rows: - return dpt.zeros( - (n_rows, n_cols), - dtype=dtype, - order=order, - device=device, - usm_type=usm_type, - sycl_queue=sycl_queue, - ) - dpctl.utils.validate_usm_type(usm_type, allow_none=False) - sycl_queue = normalize_queue_device(sycl_queue=sycl_queue, device=device) - dtype = _get_dtype(dtype, sycl_queue) - _ensure_native_dtype_device_support(dtype, sycl_queue.sycl_device) - res = dpt.usm_ndarray( - (n_rows, n_cols), - dtype=dtype, - buffer=usm_type, - order=order, - buffer_ctor_kwargs={"queue": sycl_queue}, - ) - if n_rows != 0 and n_cols != 0: - _manager = dpctl.utils.SequentialOrderManager[sycl_queue] - hev, eye_ev = ti._eye(k, dst=res, sycl_queue=sycl_queue) - _manager.add_event_pair(hev, eye_ev) - return res
- - -
[docs]def tril(x, /, *, k=0): - """ - Returns the lower triangular part of a matrix (or a stack of matrices) - ``x``. - - The lower triangular part of the matrix is defined as the elements on and - below the specified diagonal ``k``. - - Args: - x (usm_ndarray): - Input array - k (int, optional): - Specifies the diagonal above which to set - elements to zero. If ``k = 0``, the diagonal is the main diagonal. - If ``k < 0``, the diagonal is below the main diagonal. - If ``k > 0``, the diagonal is above the main diagonal. - Default: ``0`` - - Returns: - usm_ndarray: - A lower-triangular array or a stack of lower-triangular arrays. - """ - if not isinstance(x, dpt.usm_ndarray): - raise TypeError( - "Expected argument of type dpctl.tensor.usm_ndarray, " - f"got {type(x)}." - ) - - k = operator.index(k) - - order = "F" if (x.flags.f_contiguous) else "C" - - shape = x.shape - nd = x.ndim - if nd < 2: - raise ValueError("Array dimensions less than 2.") - - q = x.sycl_queue - if k >= shape[nd - 1] - 1: - res = dpt.empty( - x.shape, - dtype=x.dtype, - order=order, - usm_type=x.usm_type, - sycl_queue=q, - ) - _manager = dpctl.utils.SequentialOrderManager[q] - dep_evs = _manager.submitted_events - hev, cpy_ev = ti._copy_usm_ndarray_into_usm_ndarray( - src=x, dst=res, sycl_queue=q, depends=dep_evs - ) - _manager.add_event_pair(hev, cpy_ev) - elif k < -shape[nd - 2]: - res = dpt.zeros( - x.shape, - dtype=x.dtype, - order=order, - usm_type=x.usm_type, - sycl_queue=q, - ) - else: - res = dpt.empty( - x.shape, - dtype=x.dtype, - order=order, - usm_type=x.usm_type, - sycl_queue=q, - ) - _manager = dpctl.utils.SequentialOrderManager[q] - dep_evs = _manager.submitted_events - hev, tril_ev = ti._tril( - src=x, dst=res, k=k, sycl_queue=q, depends=dep_evs - ) - _manager.add_event_pair(hev, tril_ev) - - return res
- - -
[docs]def triu(x, /, *, k=0): - """ - Returns the upper triangular part of a matrix (or a stack of matrices) - ``x``. - - The upper triangular part of the matrix is defined as the elements on and - above the specified diagonal ``k``. - - Args: - x (usm_ndarray): - Input array - k (int, optional): - Specifies the diagonal below which to set - elements to zero. If ``k = 0``, the diagonal is the main diagonal. - If ``k < 0``, the diagonal is below the main diagonal. - If ``k > 0``, the diagonal is above the main diagonal. - Default: ``0`` - - Returns: - usm_ndarray: - An upper-triangular array or a stack of upper-triangular arrays. - """ - if not isinstance(x, dpt.usm_ndarray): - raise TypeError( - "Expected argument of type dpctl.tensor.usm_ndarray, " - f"got {type(x)}." - ) - - k = operator.index(k) - - order = "F" if (x.flags.f_contiguous) else "C" - - shape = x.shape - nd = x.ndim - if nd < 2: - raise ValueError("Array dimensions less than 2.") - - q = x.sycl_queue - if k > shape[nd - 1]: - res = dpt.zeros( - x.shape, - dtype=x.dtype, - order=order, - usm_type=x.usm_type, - sycl_queue=q, - ) - elif k <= -shape[nd - 2] + 1: - res = dpt.empty( - x.shape, - dtype=x.dtype, - order=order, - usm_type=x.usm_type, - sycl_queue=q, - ) - _manager = dpctl.utils.SequentialOrderManager[q] - dep_evs = _manager.submitted_events - hev, cpy_ev = ti._copy_usm_ndarray_into_usm_ndarray( - src=x, dst=res, sycl_queue=q, depends=dep_evs - ) - _manager.add_event_pair(hev, cpy_ev) - else: - res = dpt.empty( - x.shape, - dtype=x.dtype, - order=order, - usm_type=x.usm_type, - sycl_queue=q, - ) - _manager = dpctl.utils.SequentialOrderManager[q] - dep_evs = _manager.submitted_events - hev, triu_ev = ti._triu( - src=x, dst=res, k=k, sycl_queue=q, depends=dep_evs - ) - _manager.add_event_pair(hev, triu_ev) - - return res
- - -
[docs]def meshgrid(*arrays, indexing="xy"): - """ - Creates list of :class:`dpctl.tensor.usm_ndarray` coordinate matrices - from vectors. - - Args: - arrays (usm_ndarray): - an arbitrary number of one-dimensional arrays - representing grid coordinates. Each array should have the same - numeric data type. - indexing (``"xy"``, or ``"ij"``): - Cartesian (``"xy"``) or matrix (``"ij"``) indexing of output. - If provided zero or one one-dimensional vector(s) (i.e., the - zero- and one-dimensional cases, respectively), the ``indexing`` - keyword has no effect and should be ignored. Default: ``"xy"`` - - Returns: - List[array]: - list of ``N`` arrays, where ``N`` is the number of - provided one-dimensional input arrays. Each returned array must - have rank ``N``. - For a set of ``n`` vectors with lengths ``N0``, ``N1``, ``N2``, ... - The cartesian indexing results in arrays of shape - ``(N1, N0, N2, ...)``, while the - matrix indexing results in arrays of shape - ``(N0, N1, N2, ...)``. - Default: ``"xy"``. - - Raises: - ValueError: If vectors are not of the same data type, or are not - one-dimensional. - - """ - ref_dt = None - ref_unset = True - for array in arrays: - if not isinstance(array, dpt.usm_ndarray): - raise TypeError( - f"Expected instance of dpt.usm_ndarray, got {type(array)}." - ) - if array.ndim != 1: - raise ValueError("All arrays must be one-dimensional.") - if ref_unset: - ref_unset = False - ref_dt = array.dtype - else: - if not ref_dt == array.dtype: - raise ValueError( - "All arrays must be of the same numeric data type." - ) - if indexing not in ["xy", "ij"]: - raise ValueError( - "Unrecognized indexing keyword value, expecting 'xy' or 'ij.'" - ) - n = len(arrays) - if n == 0: - return [] - - sh = (-1,) + (1,) * (n - 1) - - res = [] - if n > 1 and indexing == "xy": - res.append(dpt.reshape(arrays[0], (1, -1) + sh[2:], copy=True)) - res.append(dpt.reshape(arrays[1], sh, copy=True)) - arrays, sh = arrays[2:], sh[-2:] + sh[:-2] - - for array in arrays: - res.append(dpt.reshape(array, sh, copy=True)) - sh = sh[-1:] + sh[:-1] - - output = dpt.broadcast_arrays(*res) - - return output
-
-
-
-
- - -
-
- - Made with Sphinx and @pradyunsg's - - Furo - -
-
- -
-
- -
-
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/pulls/1961/_modules/dpctl/tensor/_device.html b/pulls/1961/_modules/dpctl/tensor/_device.html deleted file mode 100644 index 827afb7306..0000000000 --- a/pulls/1961/_modules/dpctl/tensor/_device.html +++ /dev/null @@ -1,1008 +0,0 @@ - - - - - - - - - - - - dpctl.tensor._device - Data Parallel Control (dpctl) 0.19.0dev0 documentation - - - - - - - - - - - - - - - - - - - Contents - - - - - - Menu - - - - - - - - Expand - - - - - - Light mode - - - - - - - - - - - - - - Dark mode - - - - - - - Auto light/dark, in light mode - - - - - - - - - - - - - - - Auto light/dark, in dark mode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Skip to content - - - -
-
-
- -
- -
-
- -
- -
-
- -
-
-
- - - - - Back to top - -
-
- -
- -
-
-

Source code for dpctl.tensor._device

-#                       Data Parallel Control (dpctl)
-#
-#  Copyright 2020-2025 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.
-import dpctl
-from dpctl._sycl_device_factory import _cached_default_device
-from dpctl._sycl_queue_manager import get_device_cached_queue
-
-__doc__ = "Implementation of array API mandated Device class"
-
-
-
[docs]class Device: - """ - An object representing Data-API concept of device. - - This is a wrapper around :class:`dpctl.SyclQueue` with custom - formatting. The class does not have public constructor, - but a class method :meth:`dpctl.tensor.Device.create_device` to construct - it from `device` keyword argument in Array-API functions. - - Instance can be queried for ``sycl_queue``, ``sycl_context``, - or ``sycl_device``. - """ - - __device_queue_map__ = {} - sycl_queue_ = None - - def __new__(cls, *args, **kwargs): - raise TypeError("No public constructor") - - @classmethod - def create_device(cls, device=None): - """Device.create_device(device=None) - - Creates instance of Device from argument. - - Args: - device: - Device specification, i.e. `None`, :class:`.Device`, - :class:`dpctl.SyclQueue`, or a :class:`dpctl.SyclDevice` - corresponding to a root SYCL device. - Raises: - ValueError: if an instance of :class:`dpctl.SycDevice` corresponding - to a sub-device was specified as the argument - SyclQueueCreationError: if :class:`dpctl.SyclQueue` could not be - created from the argument - """ - dev = device - obj = super().__new__(cls) - if isinstance(dev, Device): - obj.sycl_queue_ = dev.sycl_queue - elif isinstance(dev, dpctl.SyclQueue): - obj.sycl_queue_ = dev - elif isinstance(dev, dpctl.SyclDevice): - par = dev.parent_device - if par is None: - obj.sycl_queue_ = get_device_cached_queue(dev) - else: - raise ValueError( - f"Using non-root device {dev} to specify offloading " - "target is ambiguous. Please use dpctl.SyclQueue " - "targeting this device" - ) - else: - if dev is None: - _dev = _cached_default_device() - else: - _dev = dpctl.SyclDevice(dev) - obj.sycl_queue_ = get_device_cached_queue(_dev) - return obj - - @property - def sycl_queue(self): - """ - :class:`dpctl.SyclQueue` used to offload to this :class:`.Device`. - """ - return self.sycl_queue_ - - @property - def sycl_context(self): - """ - :class:`dpctl.SyclContext` associated with this :class:`.Device`. - """ - return self.sycl_queue_.sycl_context - - @property - def sycl_device(self): - """ - :class:`dpctl.SyclDevice` targeted by this :class:`.Device`. - """ - return self.sycl_queue_.sycl_device - - def __repr__(self): - try: - sd = self.sycl_device - except AttributeError as exc: - raise ValueError( - f"Instance of {self.__class__} is not initialized" - ) from exc - try: - fs = sd.filter_string - return f"Device({fs})" - except TypeError: - # This is a sub-device - return repr(self.sycl_queue) - - def print_device_info(self): - "Outputs information about targeted SYCL device" - self.sycl_device.print_device_info() - - def wait(self): - """ - Call ``wait`` method of the underlying ``sycl_queue``. - """ - self.sycl_queue_.wait() - - def __eq__(self, other): - """Equality comparison based on underlying ``sycl_queue``.""" - if isinstance(other, Device): - return self.sycl_queue.__eq__(other.sycl_queue) - elif isinstance(other, dpctl.SyclQueue): - return self.sycl_queue.__eq__(other) - return False - - def __hash__(self): - """Compute object's hash value.""" - return self.sycl_queue.__hash__()
- - -def normalize_queue_device(sycl_queue=None, device=None): - """normalize_queue_device(sycl_queue=None, device=None) - - Utility to process exclusive keyword arguments 'device' - and 'sycl_queue' in functions of `dpctl.tensor`. - - Args: - sycl_queue (:class:`dpctl.SyclQueue`, optional): - explicitly indicates where USM allocation is done - and the population code (if any) is executed. - Value `None` is interpreted as get the SYCL queue - from `device` keyword, or use default queue. - Default: None - device (string, :class:`dpctl.SyclDevice`, :class:`dpctl.SyclQueue, - :class:`dpctl.tensor.Device`, optional): - array-API keyword indicating non-partitioned SYCL device - where array is allocated. - - Returns - :class:`dpctl.SyclQueue` object implied by either of provided - keywords. If both are None, `dpctl.SyclQueue()` is returned. - If both are specified and imply the same queue, `sycl_queue` - is returned. - - Raises: - TypeError: if argument is not of the expected type, or keywords - imply incompatible queues. - """ - q = sycl_queue - d = device - if q is None: - d = Device.create_device(d) - return d.sycl_queue - if not isinstance(q, dpctl.SyclQueue): - raise TypeError(f"Expected dpctl.SyclQueue, got {type(q)}") - if d is None: - return q - d = Device.create_device(d) - qq = dpctl.utils.get_execution_queue( - ( - q, - d.sycl_queue, - ) - ) - if qq is None: - raise TypeError( - "sycl_queue and device keywords can not be both specified" - ) - return qq -
-
-
-
- - -
-
- - Made with Sphinx and @pradyunsg's - - Furo - -
-
- -
-
- -
-
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/pulls/1961/_modules/dpctl/tensor/_indexing_functions.html b/pulls/1961/_modules/dpctl/tensor/_indexing_functions.html deleted file mode 100644 index 294fa4d4be..0000000000 --- a/pulls/1961/_modules/dpctl/tensor/_indexing_functions.html +++ /dev/null @@ -1,1406 +0,0 @@ - - - - - - - - - - - - dpctl.tensor._indexing_functions - Data Parallel Control (dpctl) 0.19.0dev0 documentation - - - - - - - - - - - - - - - - - - - Contents - - - - - - Menu - - - - - - - - Expand - - - - - - Light mode - - - - - - - - - - - - - - Dark mode - - - - - - - Auto light/dark, in light mode - - - - - - - - - - - - - - - Auto light/dark, in dark mode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Skip to content - - - -
-
-
- -
- -
-
- -
- -
-
- -
-
-
- - - - - Back to top - -
-
- -
- -
-
-

Source code for dpctl.tensor._indexing_functions

-#                       Data Parallel Control (dpctl)
-#
-#  Copyright 2020-2025 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.
-
-import operator
-
-import dpctl
-import dpctl.tensor as dpt
-import dpctl.tensor._tensor_impl as ti
-import dpctl.utils
-
-from ._copy_utils import (
-    _extract_impl,
-    _nonzero_impl,
-    _put_multi_index,
-    _take_multi_index,
-)
-from ._numpy_helper import normalize_axis_index
-
-
-def _get_indexing_mode(name):
-    modes = {"wrap": 0, "clip": 1}
-    try:
-        return modes[name]
-    except KeyError:
-        raise ValueError(
-            "`mode` must be `wrap` or `clip`." "Got `{}`.".format(name)
-        )
-
-
-
[docs]def take(x, indices, /, *, axis=None, mode="wrap"): - """take(x, indices, axis=None, mode="wrap") - - Takes elements from an array along a given axis at given indices. - - Args: - x (usm_ndarray): - The array that elements will be taken from. - indices (usm_ndarray): - One-dimensional array of indices. - axis (int, optional): - The axis along which the values will be selected. - If ``x`` is one-dimensional, this argument is optional. - Default: ``None``. - mode (str, optional): - How out-of-bounds indices will be handled. Possible values - are: - - - ``"wrap"``: clamps indices to (``-n <= i < n``), then wraps - negative indices. - - ``"clip"``: clips indices to (``0 <= i < n``). - - Default: ``"wrap"``. - - Returns: - usm_ndarray: - Array with shape - ``x.shape[:axis] + indices.shape + x.shape[axis + 1:]`` - filled with elements from ``x``. - """ - if not isinstance(x, dpt.usm_ndarray): - raise TypeError( - "Expected instance of `dpt.usm_ndarray`, got `{}`.".format(type(x)) - ) - - if not isinstance(indices, dpt.usm_ndarray): - raise TypeError( - "`indices` expected `dpt.usm_ndarray`, got `{}`.".format( - type(indices) - ) - ) - if indices.dtype.kind not in "ui": - raise IndexError( - "`indices` expected integer data type, got `{}`".format( - indices.dtype - ) - ) - if indices.ndim != 1: - raise ValueError( - "`indices` expected a 1D array, got `{}`".format(indices.ndim) - ) - exec_q = dpctl.utils.get_execution_queue([x.sycl_queue, indices.sycl_queue]) - if exec_q is None: - raise dpctl.utils.ExecutionPlacementError - res_usm_type = dpctl.utils.get_coerced_usm_type( - [x.usm_type, indices.usm_type] - ) - - mode = _get_indexing_mode(mode) - - x_ndim = x.ndim - if axis is None: - if x_ndim > 1: - raise ValueError( - "`axis` cannot be `None` for array of dimension `{}`".format( - x_ndim - ) - ) - axis = 0 - - if x_ndim > 0: - axis = normalize_axis_index(operator.index(axis), x_ndim) - x_sh = x.shape - if x_sh[axis] == 0 and indices.size != 0: - raise IndexError("cannot take non-empty indices from an empty axis") - res_shape = x.shape[:axis] + indices.shape + x.shape[axis + 1 :] - else: - if axis != 0: - raise ValueError("`axis` must be 0 for an array of dimension 0.") - res_shape = indices.shape - - res = dpt.empty( - res_shape, dtype=x.dtype, usm_type=res_usm_type, sycl_queue=exec_q - ) - - _manager = dpctl.utils.SequentialOrderManager[exec_q] - deps_ev = _manager.submitted_events - hev, take_ev = ti._take( - x, (indices,), res, axis, mode, sycl_queue=exec_q, depends=deps_ev - ) - _manager.add_event_pair(hev, take_ev) - - return res
- - -
[docs]def put(x, indices, vals, /, *, axis=None, mode="wrap"): - """put(x, indices, vals, axis=None, mode="wrap") - - Puts values into an array along a given axis at given indices. - - Args: - x (usm_ndarray): - The array the values will be put into. - indices (usm_ndarray): - One-dimensional array of indices. - vals (usm_ndarray): - Array of values to be put into ``x``. - Must be broadcastable to the result shape - ``x.shape[:axis] + indices.shape + x.shape[axis+1:]``. - axis (int, optional): - The axis along which the values will be placed. - If ``x`` is one-dimensional, this argument is optional. - Default: ``None``. - mode (str, optional): - How out-of-bounds indices will be handled. Possible values - are: - - - ``"wrap"``: clamps indices to (``-n <= i < n``), then wraps - negative indices. - - ``"clip"``: clips indices to (``0 <= i < n``). - - Default: ``"wrap"``. - - .. note:: - - If input array ``indices`` contains duplicates, a race condition - occurs, and the value written into corresponding positions in ``x`` - may vary from run to run. Preserving sequential semantics in handing - the duplicates to achieve deterministic behavior requires additional - work, e.g. - - :Example: - - .. code-block:: python - - from dpctl import tensor as dpt - - def put_vec_duplicates(vec, ind, vals): - "Put values into vec, handling possible duplicates in ind" - assert vec.ndim, ind.ndim, vals.ndim == 1, 1, 1 - - # find positions of last occurences of each - # unique index - ind_flipped = dpt.flip(ind) - ind_uniq = dpt.unique_all(ind_flipped).indices - has_dups = len(ind) != len(ind_uniq) - - if has_dups: - ind_uniq = dpt.subtract(vec.size - 1, ind_uniq) - ind = dpt.take(ind, ind_uniq) - vals = dpt.take(vals, ind_uniq) - - dpt.put(vec, ind, vals) - - n = 512 - ind = dpt.concat((dpt.arange(n), dpt.arange(n, -1, step=-1))) - x = dpt.zeros(ind.size, dtype="int32") - vals = dpt.arange(ind.size, dtype=x.dtype) - - # Values corresponding to last positions of - # duplicate indices are written into the vector x - put_vec_duplicates(x, ind, vals) - - parts = (vals[-1:-n-2:-1], dpt.zeros(n, dtype=x.dtype)) - expected = dpt.concat(parts) - assert dpt.all(x == expected) - """ - if not isinstance(x, dpt.usm_ndarray): - raise TypeError( - "Expected instance of `dpt.usm_ndarray`, got `{}`.".format(type(x)) - ) - if not isinstance(indices, dpt.usm_ndarray): - raise TypeError( - "`indices` expected `dpt.usm_ndarray`, got `{}`.".format( - type(indices) - ) - ) - if isinstance(vals, dpt.usm_ndarray): - queues_ = [x.sycl_queue, indices.sycl_queue, vals.sycl_queue] - usm_types_ = [x.usm_type, indices.usm_type, vals.usm_type] - else: - queues_ = [x.sycl_queue, indices.sycl_queue] - usm_types_ = [x.usm_type, indices.usm_type] - if indices.ndim != 1: - raise ValueError( - "`indices` expected a 1D array, got `{}`".format(indices.ndim) - ) - if indices.dtype.kind not in "ui": - raise IndexError( - "`indices` expected integer data type, got `{}`".format( - indices.dtype - ) - ) - exec_q = dpctl.utils.get_execution_queue(queues_) - if exec_q is None: - raise dpctl.utils.ExecutionPlacementError - vals_usm_type = dpctl.utils.get_coerced_usm_type(usm_types_) - - mode = _get_indexing_mode(mode) - - x_ndim = x.ndim - if axis is None: - if x_ndim > 1: - raise ValueError( - "`axis` cannot be `None` for array of dimension `{}`".format( - x_ndim - ) - ) - axis = 0 - - if x_ndim > 0: - axis = normalize_axis_index(operator.index(axis), x_ndim) - x_sh = x.shape - if x_sh[axis] == 0 and indices.size != 0: - raise IndexError("cannot take non-empty indices from an empty axis") - val_shape = x.shape[:axis] + indices.shape + x.shape[axis + 1 :] - else: - if axis != 0: - raise ValueError("`axis` must be 0 for an array of dimension 0.") - val_shape = indices.shape - - if not isinstance(vals, dpt.usm_ndarray): - vals = dpt.asarray( - vals, dtype=x.dtype, usm_type=vals_usm_type, sycl_queue=exec_q - ) - # choose to throw here for consistency with `place` - if vals.size == 0: - raise ValueError( - "cannot put into non-empty indices along an empty axis" - ) - if vals.dtype == x.dtype: - rhs = vals - else: - rhs = dpt.astype(vals, x.dtype) - rhs = dpt.broadcast_to(rhs, val_shape) - - _manager = dpctl.utils.SequentialOrderManager[exec_q] - deps_ev = _manager.submitted_events - hev, put_ev = ti._put( - x, (indices,), rhs, axis, mode, sycl_queue=exec_q, depends=deps_ev - ) - _manager.add_event_pair(hev, put_ev)
- - -
[docs]def extract(condition, arr): - """extract(condition, arr) - - Returns the elements of an array that satisfies the condition. - - If ``condition`` is boolean ``dpctl.tensor.extract`` is - equivalent to ``arr[condition]``. - - Note that ``dpctl.tensor.place`` does the opposite of - ``dpctl.tensor.extract``. - - Args: - conditions (usm_ndarray): - An array whose non-zero or ``True`` entries indicate the element - of ``arr`` to extract. - - arr (usm_ndarray): - Input array of the same size as ``condition``. - - Returns: - usm_ndarray: - Rank 1 array of values from ``arr`` where ``condition`` is - ``True``. - """ - if not isinstance(condition, dpt.usm_ndarray): - raise TypeError( - "Expecting dpctl.tensor.usm_ndarray type, " f"got {type(condition)}" - ) - if not isinstance(arr, dpt.usm_ndarray): - raise TypeError( - "Expecting dpctl.tensor.usm_ndarray type, " f"got {type(arr)}" - ) - exec_q = dpctl.utils.get_execution_queue( - ( - condition.sycl_queue, - arr.sycl_queue, - ) - ) - if exec_q is None: - raise dpctl.utils.ExecutionPlacementError - if condition.shape != arr.shape: - raise ValueError("Arrays are not of the same size") - return _extract_impl(arr, condition)
- - -
[docs]def place(arr, mask, vals): - """place(arr, mask, vals) - - Change elements of an array based on conditional and input values. - - If ``mask`` is boolean ``dpctl.tensor.place`` is - equivalent to ``arr[condition] = vals``. - - Args: - arr (usm_ndarray): - Array to put data into. - mask (usm_ndarray): - Boolean mask array. Must have the same size as ``arr``. - vals (usm_ndarray, sequence): - Values to put into ``arr``. Only the first N elements are - used, where N is the number of True values in ``mask``. If - ``vals`` is smaller than N, it will be repeated, and if - elements of ``arr`` are to be masked, this sequence must be - non-empty. Array ``vals`` must be one dimensional. - """ - if not isinstance(arr, dpt.usm_ndarray): - raise TypeError( - "Expecting dpctl.tensor.usm_ndarray type, " f"got {type(arr)}" - ) - if not isinstance(mask, dpt.usm_ndarray): - raise TypeError( - "Expecting dpctl.tensor.usm_ndarray type, " f"got {type(mask)}" - ) - if not isinstance(vals, dpt.usm_ndarray): - raise TypeError( - "Expecting dpctl.tensor.usm_ndarray type, " f"got {type(vals)}" - ) - exec_q = dpctl.utils.get_execution_queue( - ( - arr.sycl_queue, - mask.sycl_queue, - vals.sycl_queue, - ) - ) - if exec_q is None: - raise dpctl.utils.ExecutionPlacementError - if arr.shape != mask.shape or vals.ndim != 1: - raise ValueError("Array sizes are not as required") - cumsum = dpt.empty(mask.size, dtype="i8", sycl_queue=exec_q) - _manager = dpctl.utils.SequentialOrderManager[exec_q] - deps_ev = _manager.submitted_events - nz_count = ti.mask_positions( - mask, cumsum, sycl_queue=exec_q, depends=deps_ev - ) - if nz_count == 0: - return - if vals.size == 0: - raise ValueError("Cannot insert from an empty array!") - if vals.dtype == arr.dtype: - rhs = vals - else: - rhs = dpt.astype(vals, arr.dtype) - hev, pl_ev = ti._place( - dst=arr, - cumsum=cumsum, - axis_start=0, - axis_end=mask.ndim, - rhs=rhs, - sycl_queue=exec_q, - ) - _manager.add_event_pair(hev, pl_ev)
- - -
[docs]def nonzero(arr): - """nonzero(arr) - - Return the indices of non-zero elements. - - Returns a tuple of usm_ndarrays, one for each dimension - of ``arr``, containing the indices of the non-zero elements - in that dimension. The values of ``arr`` are always tested in - row-major, C-style order. - - Args: - arr (usm_ndarray): - Input array, which has non-zero array rank. - - Returns: - Tuple[usm_ndarray, ...]: - Indices of non-zero array elements. - """ - if not isinstance(arr, dpt.usm_ndarray): - raise TypeError( - "Expecting dpctl.tensor.usm_ndarray type, " f"got {type(arr)}" - ) - if arr.ndim == 0: - raise ValueError("Array of positive rank is expected") - return _nonzero_impl(arr)
- - -def _range(sh_i, i, nd, q, usm_t, dt): - ind = dpt.arange(sh_i, dtype=dt, usm_type=usm_t, sycl_queue=q) - ind.shape = tuple(sh_i if i == j else 1 for j in range(nd)) - return ind - - -
[docs]def take_along_axis(x, indices, /, *, axis=-1, mode="wrap"): - """ - Returns elements from an array at the one-dimensional indices specified - by ``indices`` along a provided ``axis``. - - Args: - x (usm_ndarray): - input array. Must be compatible with ``indices``, except for the - axis (dimension) specified by ``axis``. - indices (usm_ndarray): - array indices. Must have the same rank (i.e., number of dimensions) - as ``x``. - axis: int - axis along which to select values. If ``axis`` is negative, the - function determines the axis along which to select values by - counting from the last dimension. Default: ``-1``. - mode (str, optional): - How out-of-bounds indices will be handled. Possible values - are: - - - ``"wrap"``: clamps indices to (``-n <= i < n``), then wraps - negative indices. - - ``"clip"``: clips indices to (``0 <= i < n``). - - Default: ``"wrap"``. - - Returns: - usm_ndarray: - an array having the same data type as ``x``. The returned array has - the same rank (i.e., number of dimensions) as ``x`` and a shape - determined according to broadcasting rules, except for the axis - (dimension) specified by ``axis`` whose size must equal the size - of the corresponding axis (dimension) in ``indices``. - - Note: - Treatment of the out-of-bound indices in ``indices`` array is controlled - by the value of ``mode`` keyword. - """ - if not isinstance(x, dpt.usm_ndarray): - raise TypeError(f"Expected dpctl.tensor.usm_ndarray, got {type(x)}") - if not isinstance(indices, dpt.usm_ndarray): - raise TypeError( - f"Expected dpctl.tensor.usm_ndarray, got {type(indices)}" - ) - x_nd = x.ndim - if x_nd != indices.ndim: - raise ValueError( - "Number of dimensions in the first and the second " - "argument arrays must be equal" - ) - pp = normalize_axis_index(operator.index(axis), x_nd) - out_usm_type = dpctl.utils.get_coerced_usm_type( - (x.usm_type, indices.usm_type) - ) - exec_q = dpctl.utils.get_execution_queue((x.sycl_queue, indices.sycl_queue)) - if exec_q is None: - raise dpctl.utils.ExecutionPlacementError( - "Execution placement can not be unambiguously inferred " - "from input arguments. " - ) - mode_i = _get_indexing_mode(mode) - indexes_dt = ( - dpt.uint64 - if indices.dtype == dpt.uint64 - else ti.default_device_index_type(exec_q.sycl_device) - ) - _ind = tuple( - ( - indices - if i == pp - else _range(x.shape[i], i, x_nd, exec_q, out_usm_type, indexes_dt) - ) - for i in range(x_nd) - ) - return _take_multi_index(x, _ind, 0, mode=mode_i)
- - -
[docs]def put_along_axis(x, indices, vals, /, *, axis=-1, mode="wrap"): - """ - Puts elements into an array at the one-dimensional indices specified by - ``indices`` along a provided ``axis``. - - Args: - x (usm_ndarray): - input array. Must be compatible with ``indices``, except for the - axis (dimension) specified by ``axis``. - indices (usm_ndarray): - array indices. Must have the same rank (i.e., number of dimensions) - as ``x``. - vals (usm_ndarray): - Array of values to be put into ``x``. - Must be broadcastable to the shape of ``indices``. - axis: int - axis along which to select values. If ``axis`` is negative, the - function determines the axis along which to select values by - counting from the last dimension. Default: ``-1``. - mode (str, optional): - How out-of-bounds indices will be handled. Possible values - are: - - - ``"wrap"``: clamps indices to (``-n <= i < n``), then wraps - negative indices. - - ``"clip"``: clips indices to (``0 <= i < n``). - - Default: ``"wrap"``. - - .. note:: - - If input array ``indices`` contains duplicates, a race condition - occurs, and the value written into corresponding positions in ``x`` - may vary from run to run. Preserving sequential semantics in handing - the duplicates to achieve deterministic behavior requires additional - work. - """ - if not isinstance(x, dpt.usm_ndarray): - raise TypeError(f"Expected dpctl.tensor.usm_ndarray, got {type(x)}") - if not isinstance(indices, dpt.usm_ndarray): - raise TypeError( - f"Expected dpctl.tensor.usm_ndarray, got {type(indices)}" - ) - x_nd = x.ndim - if x_nd != indices.ndim: - raise ValueError( - "Number of dimensions in the first and the second " - "argument arrays must be equal" - ) - pp = normalize_axis_index(operator.index(axis), x_nd) - if isinstance(vals, dpt.usm_ndarray): - queues_ = [x.sycl_queue, indices.sycl_queue, vals.sycl_queue] - usm_types_ = [x.usm_type, indices.usm_type, vals.usm_type] - else: - queues_ = [x.sycl_queue, indices.sycl_queue] - usm_types_ = [x.usm_type, indices.usm_type] - exec_q = dpctl.utils.get_execution_queue(queues_) - if exec_q is None: - raise dpctl.utils.ExecutionPlacementError( - "Execution placement can not be unambiguously inferred " - "from input arguments. " - ) - out_usm_type = dpctl.utils.get_coerced_usm_type(usm_types_) - mode_i = _get_indexing_mode(mode) - indexes_dt = ( - dpt.uint64 - if indices.dtype == dpt.uint64 - else ti.default_device_index_type(exec_q.sycl_device) - ) - _ind = tuple( - ( - indices - if i == pp - else _range(x.shape[i], i, x_nd, exec_q, out_usm_type, indexes_dt) - ) - for i in range(x_nd) - ) - return _put_multi_index(x, _ind, 0, vals, mode=mode_i)
-
-
-
-
- - -
-
- - Made with Sphinx and @pradyunsg's - - Furo - -
-
- -
-
- -
-
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/pulls/1961/_modules/dpctl/tensor/_linear_algebra_functions.html b/pulls/1961/_modules/dpctl/tensor/_linear_algebra_functions.html deleted file mode 100644 index 080c67d581..0000000000 --- a/pulls/1961/_modules/dpctl/tensor/_linear_algebra_functions.html +++ /dev/null @@ -1,1822 +0,0 @@ - - - - - - - - - - - - dpctl.tensor._linear_algebra_functions - Data Parallel Control (dpctl) 0.19.0dev0 documentation - - - - - - - - - - - - - - - - - - - Contents - - - - - - Menu - - - - - - - - Expand - - - - - - Light mode - - - - - - - - - - - - - - Dark mode - - - - - - - Auto light/dark, in light mode - - - - - - - - - - - - - - - Auto light/dark, in dark mode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Skip to content - - - -
-
-
- -
- -
-
- -
- -
-
- -
-
-
- - - - - Back to top - -
-
- -
- -
-
-

Source code for dpctl.tensor._linear_algebra_functions

-#                       Data Parallel Control (dpctl)
-#
-#  Copyright 2020-2025 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.
-
-import operator
-
-import dpctl
-import dpctl.tensor as dpt
-import dpctl.tensor._tensor_elementwise_impl as tei
-import dpctl.tensor._tensor_impl as ti
-import dpctl.tensor._tensor_linalg_impl as tli
-from dpctl.tensor._copy_utils import _empty_like_orderK, _empty_like_pair_orderK
-from dpctl.tensor._manipulation_functions import _broadcast_shape_impl
-from dpctl.tensor._type_utils import (
-    _acceptance_fn_default_binary,
-    _find_buf_dtype2,
-    _to_device_supported_dtype,
-)
-from dpctl.utils import ExecutionPlacementError, SequentialOrderManager
-
-from ._numpy_helper import normalize_axis_index, normalize_axis_tuple
-
-
-
[docs]def matrix_transpose(x): - r"""matrix_transpose(x) - - Transposes the innermost two dimensions of `x`, where `x` is a - 2-dimensional matrix or a stack of 2-dimensional matrices. - - To convert from a 1-dimensional array to a 2-dimensional column - vector, use x[:, dpt.newaxis]. - - Args: - x (usm_ndarray): - Input array with shape (..., m, n). - - Returns: - usm_ndarray: - Array with shape (..., n, m). - """ - - if not isinstance(x, dpt.usm_ndarray): - raise TypeError( - "Expected instance of `dpt.usm_ndarray`, got `{}`.".format(type(x)) - ) - if x.ndim < 2: - raise ValueError( - "dpctl.tensor.matrix_transpose requires array to have" - "at least 2 dimensions" - ) - - return x.mT
- - -
[docs]def tensordot(x1, x2, axes=2): - r"""tensordot(x1, x2, axes=2) - - Returns a tensor contraction of `x1` and `x2` over specific axes. - - Args: - x1 (usm_ndarray): - first input array, expected to have numeric data type. - x2 (usm_ndarray): - second input array, expected to have numeric data type. - Corresponding contracted axes of `x1` and `x2` must be equal. - axes (Union[int, Tuple[Sequence[int], Sequence[int]]): - number of axes to contract or explicit sequences of axes for - `x1` and `x2`, respectively. If `axes` is an integer equal to `N`, - then the contraction is performed over last `N` axes of `x1` and - the first `N` axis of `x2` in order. The size of each corresponding - axis must match and must be non-negative. - - * if `N` equals `0`, the result is the tensor outer product - * if `N` equals `1`, the result is the tensor dot product - * if `N` equals `2`, the result is the tensor double - contraction (default). - - If `axes` is a tuple of two sequences `(x1_axes, x2_axes)`, the - first sequence applies to `x1` and the second sequence applies - to `x2`. Both sequences must have equal length, and each axis - `x1_axes[i]` for `x1` must have the same size as the respective - axis `x2_axes[i]` for `x2`. Each sequence must consist of unique - integers that specify valid axes for each respective array. - For example, if `x1` has rank `N`, a valid axis must reside on the - half-open interval `[-N, N)`. - Returns: - usm_ndarray: - an array containing the tensor contraction whose shape consists of - the non-contracted axes of the first array `x1`, followed by the - non-contracted axes of the second array `x2`. The returned array - must have a data type determined by Type Promotion Rules. - """ - if not isinstance(x1, dpt.usm_ndarray): - raise TypeError(f"Expected dpctl.tensor.usm_ndarray, got {type(x1)}") - if not isinstance(x2, dpt.usm_ndarray): - raise TypeError(f"Expected dpctl.tensor.usm_ndarray, got {type(x2)}") - q1, x1_usm_type = x1.sycl_queue, x1.usm_type - q2, x2_usm_type = x2.sycl_queue, x2.usm_type - exec_q = dpctl.utils.get_execution_queue((q1, q2)) - if exec_q is None: - raise ExecutionPlacementError( - "Execution placement can not be unambiguously inferred " - "from input arguments." - ) - res_usm_type = dpctl.utils.get_coerced_usm_type( - ( - x1_usm_type, - x2_usm_type, - ) - ) - dpctl.utils.validate_usm_type(res_usm_type, allow_none=False) - # handle axes and shapes validation - x1_nd = x1.ndim - x2_nd = x2.ndim - x1_shape = x1.shape - x2_shape = x2.shape - if isinstance(axes, int): - if axes < 0: - raise ValueError("`axes` integer is expected to be non-negative") - n_axes1 = axes - n_axes2 = axes - axes1 = normalize_axis_tuple(tuple(range(-axes, 0)), x1_nd) - axes2 = tuple(range(0, axes)) - elif isinstance(axes, tuple): - if len(axes) != 2: - raise ValueError( - "`axes` tuple is expected to contain two sequences" - ) - axes1 = tuple(axes[0]) - axes2 = tuple(axes[1]) - n_axes1 = len(axes1) - n_axes2 = len(axes2) - else: - raise TypeError("`axes` must be an integer or a tuple of sequences") - if n_axes1 != n_axes2: - raise ValueError( - "number of axes contracted must be the same for each array" - ) - if n_axes1 == 0: - arr1 = x1[..., dpt.newaxis] - arr2 = x2[dpt.newaxis, ...] - n_axes1 = 1 - n_axes2 = 1 - else: - same_shapes = True - for i in range(n_axes1): - axis1 = axes1[i] - axis2 = axes2[i] - same_shapes = same_shapes and (x1_shape[axis1] == x2_shape[axis2]) - if not same_shapes: - raise ValueError("shape mismatch in contracted `tensordot` axes") - axes1 = normalize_axis_tuple(axes1, x1_nd) - axes2 = normalize_axis_tuple(axes2, x2_nd) - perm1 = [i for i in range(x1_nd) if i not in axes1] + list(axes1) - perm2 = list(axes2) + [i for i in range(x2_nd) if i not in axes2] - arr1 = dpt.permute_dims(x1, perm1) - arr2 = dpt.permute_dims(x2, perm2) - arr1_outer_nd = arr1.ndim - n_axes1 - arr2_outer_nd = arr2.ndim - n_axes2 - res_shape = arr1.shape[:arr1_outer_nd] + arr2.shape[n_axes2:] - # type validation - sycl_dev = exec_q.sycl_device - x1_dtype = x1.dtype - x2_dtype = x2.dtype - buf1_dt, buf2_dt, res_dt = _find_buf_dtype2( - x1_dtype, - x2_dtype, - tli._dot_result_type, - sycl_dev, - acceptance_fn=_acceptance_fn_default_binary, - ) - if res_dt is None: - raise TypeError( - "function 'tensordot' does not support input types " - f"({x1_dtype}, {x2_dtype}), " - "and the inputs could not be safely coerced to any " - "supported types according to the casting rule ''safe''." - ) - - _manager = SequentialOrderManager[exec_q] - if buf1_dt is None and buf2_dt is None: - out = dpt.empty( - res_shape, - dtype=res_dt, - usm_type=res_usm_type, - sycl_queue=exec_q, - order="C", - ) - dep_evs = _manager.submitted_events - ht_dot_ev, dot_ev = tli._dot( - x1=arr1, - x2=arr2, - batch_dims=0, - x1_outer_dims=arr1_outer_nd, - x2_outer_dims=arr2_outer_nd, - inner_dims=n_axes1, - dst=out, - sycl_queue=exec_q, - depends=dep_evs, - ) - _manager.add_event_pair(ht_dot_ev, dot_ev) - - return out - - elif buf1_dt is None: - buf2 = _empty_like_orderK(arr2, buf2_dt) - - dep_evs = _manager.submitted_events - ht_copy_ev, copy_ev = ti._copy_usm_ndarray_into_usm_ndarray( - src=arr2, dst=buf2, sycl_queue=exec_q, depends=dep_evs - ) - _manager.add_event_pair(ht_copy_ev, copy_ev) - out = dpt.empty( - res_shape, - dtype=res_dt, - usm_type=res_usm_type, - sycl_queue=exec_q, - order="C", - ) - ht_dot_ev, dot_ev = tli._dot( - x1=arr1, - x2=buf2, - batch_dims=0, - x1_outer_dims=arr1_outer_nd, - x2_outer_dims=arr2_outer_nd, - inner_dims=n_axes1, - dst=out, - sycl_queue=exec_q, - depends=[copy_ev], - ) - _manager.add_event_pair(ht_dot_ev, dot_ev) - - return out - - elif buf2_dt is None: - buf1 = _empty_like_orderK(arr1, buf1_dt) - dep_evs = _manager.submitted_events - ht_copy_ev, copy_ev = ti._copy_usm_ndarray_into_usm_ndarray( - src=arr1, dst=buf1, sycl_queue=exec_q, depends=dep_evs - ) - _manager.add_event_pair(ht_copy_ev, copy_ev) - out = dpt.empty( - res_shape, - dtype=res_dt, - usm_type=res_usm_type, - sycl_queue=exec_q, - order="C", - ) - ht_dot_ev, dot_ev = tli._dot( - x1=buf1, - x2=arr2, - batch_dims=0, - x1_outer_dims=arr1_outer_nd, - x2_outer_dims=arr2_outer_nd, - inner_dims=n_axes1, - dst=out, - sycl_queue=exec_q, - depends=[copy_ev], - ) - _manager.add_event_pair(ht_dot_ev, dot_ev) - - return out - - buf1 = _empty_like_orderK(arr1, buf1_dt) - deps_ev = _manager.submitted_events - ht_copy1_ev, copy1_ev = ti._copy_usm_ndarray_into_usm_ndarray( - src=arr1, dst=buf1, sycl_queue=exec_q, depends=deps_ev - ) - _manager.add_event_pair(ht_copy1_ev, copy1_ev) - buf2 = _empty_like_orderK(arr2, buf2_dt) - ht_copy2_ev, copy2_ev = ti._copy_usm_ndarray_into_usm_ndarray( - src=arr2, dst=buf2, sycl_queue=exec_q, depends=deps_ev - ) - _manager.add_event_pair(ht_copy2_ev, copy2_ev) - out = dpt.empty( - res_shape, - dtype=res_dt, - usm_type=res_usm_type, - sycl_queue=exec_q, - order="C", - ) - ht_, dot_ev = tli._dot( - x1=buf1, - x2=buf2, - batch_dims=0, - x1_outer_dims=arr1_outer_nd, - x2_outer_dims=arr2_outer_nd, - inner_dims=n_axes1, - dst=out, - sycl_queue=exec_q, - depends=[copy1_ev, copy2_ev], - ) - _manager.add_event_pair(ht_, dot_ev) - - return out
- - -
[docs]def vecdot(x1, x2, axis=-1): - r"""vecdot(x1, x2, axis=-1) - - Computes the (vector) dot product of two arrays. - - Args: - x1 (usm_ndarray): - first input array. - x2 (usm_ndarray): - second input array. Input arrays must have compatible - shapes along non-contract axes according to broadcasting - rules, and must have the same size along the contracted - axis. Input arrays should be of numeric type. - axis (Optional[int]): - axis over which to compute the dot product. The axis must - be an integer on the interval `[-N, -1]`, where `N` is - ``min(x1.ndim, x2.ndim)``. The axis along which dot product - is performed is counted backward from the last axes - (that is, `-1` refers to the last axis). By default, - dot product is computed over the last axis. - Default: `-1`. - - Returns: - usm_ndarray: - if `x1` and `x2` are both one-dimensional arrays, a - zero-dimensional array containing the dot product value - is returned; otherwise, a non-zero-dimensional array containing - the dot products and having rank `N-1`, where `N` is the rank - of the shape of input arrays after broadcasting rules are applied - to non-contracted axes. - """ - if not isinstance(x1, dpt.usm_ndarray): - raise TypeError(f"Expected dpctl.tensor.usm_ndarray, got {type(x1)}") - if not isinstance(x2, dpt.usm_ndarray): - raise TypeError(f"Expected dpctl.tensor.usm_ndarray, got {type(x2)}") - q1, x1_usm_type = x1.sycl_queue, x1.usm_type - q2, x2_usm_type = x2.sycl_queue, x2.usm_type - exec_q = dpctl.utils.get_execution_queue((q1, q2)) - if exec_q is None: - raise ExecutionPlacementError( - "Execution placement can not be unambiguously inferred " - "from input arguments." - ) - res_usm_type = dpctl.utils.get_coerced_usm_type( - ( - x1_usm_type, - x2_usm_type, - ) - ) - dpctl.utils.validate_usm_type(res_usm_type, allow_none=False) - # axis and shape validation - x1_nd = x1.ndim - x2_nd = x2.ndim - x1_shape = x1.shape - x2_shape = x2.shape - if axis >= 0: - raise ValueError("`axis` must be negative") - axis = operator.index(axis) - x1_axis = normalize_axis_index(axis, x1_nd) - x2_axis = normalize_axis_index(axis, x2_nd) - if x1_shape[x1_axis] != x2_shape[x2_axis]: - raise ValueError( - "given axis must have the same shape for `x1` and `x2`" - ) - if x1_nd > x2_nd: - x2_shape = (1,) * (x1_nd - x2_nd) + x2_shape - elif x2_nd > x1_nd: - x1_shape = (1,) * (x2_nd - x1_nd) + x1_shape - try: - broadcast_sh = _broadcast_shape_impl( - [ - x1_shape, - x2_shape, - ] - ) - except ValueError: - raise ValueError("mismatch in `vecdot` dimensions") - broadcast_nd = len(broadcast_sh) - contracted_axis = normalize_axis_index(axis, broadcast_nd) - res_sh = tuple( - [broadcast_sh[i] for i in range(broadcast_nd) if i != contracted_axis] - ) - # type validation - sycl_dev = exec_q.sycl_device - x1_dtype = x1.dtype - x2_dtype = x2.dtype - buf1_dt, buf2_dt, res_dt = _find_buf_dtype2( - x1_dtype, - x2_dtype, - tli._dot_result_type, - sycl_dev, - acceptance_fn=_acceptance_fn_default_binary, - ) - if res_dt is None: - raise TypeError( - "function 'vecdot' does not support input types " - f"({x1_dtype}, {x2_dtype}), " - "and the inputs could not be safely coerced to any " - "supported types according to the casting rule ''safe''." - ) - - _manager = SequentialOrderManager[exec_q] - if buf1_dt is None and buf2_dt is None: - if x1.dtype.kind == "c": - x1_tmp = _empty_like_orderK(x1, x1.dtype) - dep_evs = _manager.submitted_events - ht_conj_ev, conj_ev = tei._conj( - src=x1, dst=x1_tmp, sycl_queue=exec_q, depends=dep_evs - ) - _manager.add_event_pair(ht_conj_ev, conj_ev) - x1 = x1_tmp - if x1.shape != broadcast_sh: - x1 = dpt.broadcast_to(x1, broadcast_sh) - if x2.shape != broadcast_sh: - x2 = dpt.broadcast_to(x2, broadcast_sh) - x1 = dpt.moveaxis(x1, contracted_axis, -1) - x2 = dpt.moveaxis(x2, contracted_axis, -1) - out = dpt.empty( - res_sh, - dtype=res_dt, - usm_type=res_usm_type, - sycl_queue=exec_q, - order="C", - ) - dep_evs = _manager.submitted_events - ht_dot_ev, dot_ev = tli._dot( - x1=x1, - x2=x2, - batch_dims=len(res_sh), - x1_outer_dims=0, - x2_outer_dims=0, - inner_dims=1, - dst=out, - sycl_queue=exec_q, - depends=dep_evs, - ) - _manager.add_event_pair(ht_dot_ev, dot_ev) - return dpt.reshape(out, res_sh) - - elif buf1_dt is None: - if x1.dtype.kind == "c": - x1_tmp = _empty_like_orderK(x1, x1.dtype) - deps_ev = _manager.submitted_events - ht_conj_ev, conj_e = tei._conj( - src=x1, dst=x1_tmp, sycl_queue=exec_q, depends=deps_ev - ) - _manager.add_event_pair(ht_conj_ev, conj_e) - x1 = x1_tmp - buf2 = _empty_like_orderK(x2, buf2_dt) - deps_ev = _manager.submitted_events - ht_copy_ev, copy_ev = ti._copy_usm_ndarray_into_usm_ndarray( - src=x2, dst=buf2, sycl_queue=exec_q, depends=deps_ev - ) - _manager.add_event_pair(ht_copy_ev, copy_ev) - if x1.shape != broadcast_sh: - x1 = dpt.broadcast_to(x1, broadcast_sh) - if buf2.shape != broadcast_sh: - buf2 = dpt.broadcast_to(buf2, broadcast_sh) - x1 = dpt.moveaxis(x1, contracted_axis, -1) - buf2 = dpt.moveaxis(buf2, contracted_axis, -1) - out = dpt.empty( - res_sh, - dtype=res_dt, - usm_type=res_usm_type, - sycl_queue=exec_q, - order="C", - ) - ht_dot_ev, dot_ev = tli._dot( - x1=x1, - x2=buf2, - batch_dims=len(res_sh), - x1_outer_dims=0, - x2_outer_dims=0, - inner_dims=1, - dst=out, - sycl_queue=exec_q, - depends=[copy_ev], - ) - _manager.add_event_pair(ht_dot_ev, dot_ev) - return dpt.reshape(out, res_sh) - - elif buf2_dt is None: - buf1 = _empty_like_orderK(x1, buf1_dt) - deps_ev = _manager.submitted_events - ht_copy_ev, copy_ev = ti._copy_usm_ndarray_into_usm_ndarray( - src=x1, dst=buf1, sycl_queue=exec_q, depends=deps_ev - ) - _manager.add_event_pair(ht_copy_ev, copy_ev) - if buf1.dtype.kind == "c": - ht_conj_ev, conj_ev = tei._conj( - src=buf1, dst=buf1, sycl_queue=exec_q, depends=[copy_ev] - ) - _manager.add_event_pair(ht_conj_ev, conj_ev) - if buf1.shape != broadcast_sh: - buf1 = dpt.broadcast_to(buf1, broadcast_sh) - if x2.shape != broadcast_sh: - x2 = dpt.broadcast_to(x2, broadcast_sh) - buf1 = dpt.moveaxis(buf1, contracted_axis, -1) - x2 = dpt.moveaxis(x2, contracted_axis, -1) - out = dpt.empty( - res_sh, - dtype=res_dt, - usm_type=res_usm_type, - sycl_queue=exec_q, - order="C", - ) - deps_ev = _manager.submitted_events - ht_dot_ev, dot_ev = tli._dot( - x1=buf1, - x2=x2, - batch_dims=len(res_sh), - x1_outer_dims=0, - x2_outer_dims=0, - inner_dims=1, - dst=out, - sycl_queue=exec_q, - depends=deps_ev, - ) - _manager.add_event_pair(ht_dot_ev, dot_ev) - return dpt.reshape(out, res_sh) - - buf1 = _empty_like_orderK(x1, buf1_dt) - deps_ev = _manager.submitted_events - ht_copy1_ev, copy1_ev = ti._copy_usm_ndarray_into_usm_ndarray( - src=x1, dst=buf1, sycl_queue=exec_q, depends=deps_ev - ) - _manager.add_event_pair(ht_copy1_ev, copy1_ev) - if buf1.dtype.kind == "c": - ht_conj_ev, conj_ev = tei._conj( - src=buf1, dst=buf1, sycl_queue=exec_q, depends=[copy1_ev] - ) - _manager.add_event_pair(ht_conj_ev, conj_ev) - buf2 = _empty_like_orderK(x2, buf2_dt) - ht_copy2_ev, copy2_ev = ti._copy_usm_ndarray_into_usm_ndarray( - src=x2, dst=buf2, sycl_queue=exec_q, depends=deps_ev - ) - _manager.add_event_pair(ht_copy2_ev, copy2_ev) - if buf1.shape != broadcast_sh: - buf1 = dpt.broadcast_to(buf1, broadcast_sh) - if buf2.shape != broadcast_sh: - buf2 = dpt.broadcast_to(buf2, broadcast_sh) - buf1 = dpt.moveaxis(buf1, contracted_axis, -1) - buf2 = dpt.moveaxis(buf2, contracted_axis, -1) - out = dpt.empty( - res_sh, - dtype=res_dt, - usm_type=res_usm_type, - sycl_queue=exec_q, - order="C", - ) - deps_ev = _manager.submitted_events - ht_dot_ev, dot_ev = tli._dot( - x1=buf1, - x2=buf2, - batch_dims=len(res_sh), - x1_outer_dims=0, - x2_outer_dims=0, - inner_dims=1, - dst=out, - sycl_queue=exec_q, - depends=deps_ev, - ) - _manager.add_event_pair(ht_dot_ev, dot_ev) - return out
- - -
[docs]def matmul(x1, x2, out=None, dtype=None, order="K"): - r"""matmul(x1, x2, out=None, order="K") - - Computes the matrix product. Implements the same semantics - as the built-in operator `@`. - - Args: - x1 (usm_ndarray): - first input array. Expected to have numeric data type, and - at least one dimension. If `x1` is one-dimensional having - shape `(M,)`, and `x2` has more than one dimension, `x1` is - effectively treated as a two-dimensional array with shape `(1, M)`, - although the prepended dimension is removed from the output array. - If `x1` has shape `(..., M, K)`, the innermost two dimensions form - matrices on which to perform matrix multiplication. - x2 (usm_ndarray): - second input array. Expected to have numeric data type, and - at least one dimension. If `x2` is one-dimensional having - shape `(N,)`, and `x1` has more than one dimension, `x2` is - effectively treated as a two-dimensional array with shape `(N, 1)`, - although the appended dimension is removed from the output array. - If `x2` has shape `(..., K, N)`, the innermost two dimensions form - matrices on which to perform matrix multiplication. - out (Optional[usm_ndarray]): - the array into which the result of the matrix product is written. - The data type of `out` must match the expected data type of the - result or (if provided) `dtype`. - If `None` then a new array is returned. Default: `None`. - dtype (Optional[dtype]): - data type of the returned array. If `None`, the data type of the - returned array is determined by the Type Promotion Rules. - Default: `None`. - order (["K", "C", "F", "A"]): - memory layout of the output array, if `out` is `None`, otherwise - the `order` parameter value is not used. Default: `K`. - Returns: - usm_ndarray: - * if both `x1` and `x2` are one-dimensional arrays with shape - `(N,)`, returned array is a zero-dimensional array containing - inner product as its only element. - * if `x1` is two-dimensional array with shape `(M, K)` and `x2` is - a two-dimensional array with shape `(K, N)`, returned array is a - two-dimensional array with shape `(M, N)` and contains the - conventional matrix product. - * if `x1` is a one-dimensional array with shape `(K,)` and `x2` is - an array with shape `(..., K, N)`, returned array contains the - conventional matrix product and has shape `(..., N)`. - * if `x1` is an array with shape `(..., M, K)` and `x2` is a - one-dimensional array with shape `(K,)`, returned array has shape - `(..., M)` and contains the conventional matrix product. - * if `x1` is a two-dimensional array with shape `(M, K)` and `x2` - is an array with shape `(..., K, N)`, returned array contains - conventional matrix product for each stacked matrix and has shape - `(..., M, N)`. - * if `x1` has shape `(..., M, K)` and `x2` is a two-dimensional - array with shape `(K, N)`, returned array contains conventional - matrix product for each stacked matrix and has shape - `(..., M, N)`. - * if both `x1` and `x2` have more than two dimensions, returned - array contains conventional matrix product for each stacked - matrix and has shape determined by broadcasting rules for - `x1.shape[:-2]` and `x2.shape[:-2]`. - - The data type of the returned array is determined by the Type - Promotion Rules. If either `x1` or `x2` has a complex floating - point type, neither argument is complex conjugated or transposed. - """ - if not isinstance(x1, dpt.usm_ndarray): - raise TypeError(f"Expected dpctl.tensor.usm_ndarray, got {type(x1)}") - if not isinstance(x2, dpt.usm_ndarray): - raise TypeError(f"Expected dpctl.tensor.usm_ndarray, got {type(x2)}") - if order not in ["K", "C", "F", "A"]: - order = "K" - q1, x1_usm_type = x1.sycl_queue, x1.usm_type - q2, x2_usm_type = x2.sycl_queue, x2.usm_type - exec_q = dpctl.utils.get_execution_queue((q1, q2)) - if exec_q is None: - raise ExecutionPlacementError( - "Execution placement can not be unambiguously inferred " - "from input arguments." - ) - res_usm_type = dpctl.utils.get_coerced_usm_type( - ( - x1_usm_type, - x2_usm_type, - ) - ) - dpctl.utils.validate_usm_type(res_usm_type, allow_none=False) - - x1_nd = x1.ndim - x2_nd = x2.ndim - if x1_nd == 0 or x2_nd == 0: - raise ValueError("one or more operands to `matmul` is 0 dimensional") - x1_shape = x1.shape - x2_shape = x2.shape - appended_axes = [] - if x1_nd == 1: - x1 = x1[dpt.newaxis, :] - x1_shape = x1.shape - appended_axes.append(-2) - if x2_nd == 1: - x2 = x2[:, dpt.newaxis] - x2_shape = x2.shape - appended_axes.append(-1) - if x1_shape[-1] != x2_shape[-2]: - raise ValueError("mismatch in `matmul` inner dimension") - x1_outer_sh = x1_shape[:-2] - x2_outer_sh = x2_shape[:-2] - try: - res_outer_sh = _broadcast_shape_impl( - [ - x1_outer_sh, - x2_outer_sh, - ] - ) - except ValueError: - raise ValueError("mismatch in `matmul` batching dimensions") - x1_broadcast_shape = res_outer_sh + x1_shape[-2:] - x2_broadcast_shape = res_outer_sh + x2_shape[-2:] - res_shape = res_outer_sh + x1_shape[-2:-1] + x2_shape[-1:] - - sycl_dev = exec_q.sycl_device - x1_dtype = x1.dtype - x2_dtype = x2.dtype - if dtype is None: - buf1_dt, buf2_dt, res_dt = _find_buf_dtype2( - x1_dtype, - x2_dtype, - tli._dot_result_type, - sycl_dev, - acceptance_fn=_acceptance_fn_default_binary, - ) - if res_dt is None: - raise ValueError( - "function 'matmul' does not support input types " - f"({x1_dtype}, {x2_dtype}), " - "and the inputs could not be safely coerced to any " - "supported types according to the casting rule ''safe''." - ) - else: - res_dt = dpt.dtype(dtype) - res_dt = _to_device_supported_dtype(res_dt, sycl_dev) - buf1_dt, buf2_dt = None, None - if x1_dtype != res_dt: - if dpt.can_cast(x1_dtype, res_dt, casting="same_kind"): - buf1_dt = res_dt - else: - raise ValueError( - r"`matmul` input `x1` cannot be cast from " - f"{x1_dtype} to " - f"requested type {res_dt} according to the casting rule " - "''same_kind''." - ) - if x2_dtype != res_dt: - if dpt.can_cast(x2_dtype, res_dt, casting="same_kind"): - buf2_dt = res_dt - else: - raise ValueError( - r"`matmul` input `x2` cannot be cast from " - f"{x2_dtype} to " - f"requested type {res_dt} according to the casting rule " - "''same_kind''." - ) - - orig_out = out - if out is not None: - if not isinstance(out, dpt.usm_ndarray): - raise TypeError( - f"output array must be of usm_ndarray type, got {type(out)}" - ) - - if not out.flags.writable: - raise ValueError("provided `out` array is read-only") - - final_res_shape = tuple( - res_shape[i] - for i in range(-len(res_shape), 0) - if i not in appended_axes - ) - if out.shape != final_res_shape: - raise ValueError( - "The shape of input and output arrays are inconsistent. " - f"Expected output shape is {final_res_shape}, got {out.shape}" - ) - - if appended_axes: - out = dpt.expand_dims(out, axis=appended_axes) - orig_out = out - - if res_dt != out.dtype: - raise ValueError( - f"Output array of type {res_dt} is needed, got {out.dtype}" - ) - - if dpctl.utils.get_execution_queue((exec_q, out.sycl_queue)) is None: - raise ExecutionPlacementError( - "Input and output allocation queues are not compatible" - ) - - if ti._array_overlap(x1, out) and buf1_dt is None: - out = dpt.empty_like(out) - - if ti._array_overlap(x2, out) and buf2_dt is None: - # should not reach if out is reallocated - # after being checked against x1 - out = dpt.empty_like(out) - - if order == "A": - order = ( - "F" - if all( - arr.flags.f_contiguous - for arr in ( - x1, - x2, - ) - ) - else "C" - ) - - _manager = SequentialOrderManager[exec_q] - if buf1_dt is None and buf2_dt is None: - if out is None: - if order == "K": - out = _empty_like_pair_orderK( - x1, x2, res_dt, res_shape, res_usm_type, exec_q - ) - else: - out = dpt.empty( - res_shape, - dtype=res_dt, - usm_type=res_usm_type, - sycl_queue=exec_q, - order=order, - ) - if x1.shape != x1_broadcast_shape: - x1 = dpt.broadcast_to(x1, x1_broadcast_shape) - if x2.shape != x2_broadcast_shape: - x2 = dpt.broadcast_to(x2, x2_broadcast_shape) - deps_evs = _manager.submitted_events - ht_dot_ev, dot_ev = tli._dot( - x1=x1, - x2=x2, - batch_dims=len(res_shape[:-2]), - x1_outer_dims=1, - x2_outer_dims=1, - inner_dims=1, - dst=out, - sycl_queue=exec_q, - depends=deps_evs, - ) - _manager.add_event_pair(ht_dot_ev, dot_ev) - if not (orig_out is None or orig_out is out): - # Copy the out data from temporary buffer to original memory - ht_copy_out_ev, cpy_ev = ti._copy_usm_ndarray_into_usm_ndarray( - src=out, - dst=orig_out, - sycl_queue=exec_q, - depends=[dot_ev], - ) - _manager.add_event_pair(ht_copy_out_ev, cpy_ev) - out = orig_out - if appended_axes: - out = dpt.squeeze(out, tuple(appended_axes)) - return out - elif buf1_dt is None: - if order == "K": - buf2 = _empty_like_orderK(x2, buf2_dt) - else: - buf2 = dpt.empty_like(x2, dtype=buf2_dt, order=order) - deps_evs = _manager.submitted_events - ht_copy_ev, copy_ev = ti._copy_usm_ndarray_into_usm_ndarray( - src=x2, dst=buf2, sycl_queue=exec_q, depends=deps_evs - ) - _manager.add_event_pair(ht_copy_ev, copy_ev) - if out is None: - if order == "K": - out = _empty_like_pair_orderK( - x1, buf2, res_dt, res_shape, res_usm_type, exec_q - ) - else: - out = dpt.empty( - res_shape, - dtype=res_dt, - usm_type=res_usm_type, - sycl_queue=exec_q, - order=order, - ) - - if x1.shape != x1_broadcast_shape: - x1 = dpt.broadcast_to(x1, x1_broadcast_shape) - if buf2.shape != x2_broadcast_shape: - buf2 = dpt.broadcast_to(buf2, x2_broadcast_shape) - ht_dot_ev, dot_ev = tli._dot( - x1=x1, - x2=buf2, - batch_dims=len(res_shape[:-2]), - x1_outer_dims=1, - x2_outer_dims=1, - inner_dims=1, - dst=out, - sycl_queue=exec_q, - depends=[copy_ev], - ) - _manager.add_event_pair(ht_dot_ev, dot_ev) - if not (orig_out is None or orig_out is out): - # Copy the out data from temporary buffer to original memory - ht_copy_out_ev, cpy_ev = ti._copy_usm_ndarray_into_usm_ndarray( - src=out, - dst=orig_out, - sycl_queue=exec_q, - depends=[dot_ev], - ) - _manager.add_event_pair(ht_copy_out_ev, cpy_ev) - out = orig_out - if appended_axes: - out = dpt.squeeze(out, tuple(appended_axes)) - return out - - elif buf2_dt is None: - if order == "K": - buf1 = _empty_like_orderK(x1, buf1_dt) - else: - buf1 = dpt.empty_like(x1, dtype=buf1_dt, order=order) - deps_ev = _manager.submitted_events - ht_copy_ev, copy_ev = ti._copy_usm_ndarray_into_usm_ndarray( - src=x1, dst=buf1, sycl_queue=exec_q, depends=deps_ev - ) - _manager.add_event_pair(ht_copy_ev, copy_ev) - if out is None: - if order == "K": - out = _empty_like_pair_orderK( - buf1, x2, res_dt, res_shape, res_usm_type, exec_q - ) - else: - out = dpt.empty( - res_shape, - dtype=res_dt, - usm_type=res_usm_type, - sycl_queue=exec_q, - order=order, - ) - - if buf1.shape != x1_broadcast_shape: - buf1 = dpt.broadcast_to(buf1, x1_broadcast_shape) - if x2.shape != x2_broadcast_shape: - x2 = dpt.broadcast_to(x2, x2_broadcast_shape) - ht_dot_ev, dot_ev = tli._dot( - x1=buf1, - x2=x2, - batch_dims=len(res_shape[:-2]), - x1_outer_dims=1, - x2_outer_dims=1, - inner_dims=1, - dst=out, - sycl_queue=exec_q, - depends=[copy_ev], - ) - _manager.add_event_pair(ht_dot_ev, dot_ev) - if not (orig_out is None or orig_out is out): - # Copy the out data from temporary buffer to original memory - ht_copy_out_ev, cpy_ev = ti._copy_usm_ndarray_into_usm_ndarray( - src=out, - dst=orig_out, - sycl_queue=exec_q, - depends=[dot_ev], - ) - _manager.add_event_pair(ht_copy_out_ev, cpy_ev) - out = orig_out - if appended_axes: - out = dpt.squeeze(out, tuple(appended_axes)) - return out - - if order == "K": - if x1.flags.c_contiguous and x2.flags.c_contiguous: - order = "C" - elif x1.flags.f_contiguous and x2.flags.f_contiguous: - order = "F" - if order == "K": - buf1 = _empty_like_orderK(x1, buf1_dt) - else: - buf1 = dpt.empty_like(x1, dtype=buf1_dt, order=order) - deps_ev = _manager.submitted_events - ht_copy1_ev, copy1_ev = ti._copy_usm_ndarray_into_usm_ndarray( - src=x1, dst=buf1, sycl_queue=exec_q, depends=deps_ev - ) - _manager.add_event_pair(ht_copy1_ev, copy1_ev) - if order == "K": - buf2 = _empty_like_orderK(x2, buf2_dt) - else: - buf2 = dpt.empty_like(x2, dtype=buf2_dt, order=order) - ht_copy2_ev, copy2_ev = ti._copy_usm_ndarray_into_usm_ndarray( - src=x2, dst=buf2, sycl_queue=exec_q, depends=deps_ev - ) - _manager.add_event_pair(ht_copy2_ev, copy2_ev) - if out is None: - if order == "K": - out = _empty_like_pair_orderK( - buf1, buf2, res_dt, res_shape, res_usm_type, exec_q - ) - else: - out = dpt.empty( - res_shape, - dtype=res_dt, - usm_type=res_usm_type, - sycl_queue=exec_q, - order=order, - ) - - if buf1.shape != x1_broadcast_shape: - buf1 = dpt.broadcast_to(buf1, x1_broadcast_shape) - if buf2.shape != x2_broadcast_shape: - buf2 = dpt.broadcast_to(buf2, x2_broadcast_shape) - ht_, dot_ev = tli._dot( - x1=buf1, - x2=buf2, - batch_dims=len(res_shape[:-2]), - x1_outer_dims=1, - x2_outer_dims=1, - inner_dims=1, - dst=out, - sycl_queue=exec_q, - depends=[copy1_ev, copy2_ev], - ) - _manager.add_event_pair(ht_, dot_ev) - if appended_axes: - out = dpt.squeeze(out, tuple(appended_axes)) - return out
-
-
-
-
- - -
-
- - Made with Sphinx and @pradyunsg's - - Furo - -
-
- -
-
- -
-
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/pulls/1961/_modules/dpctl/tensor/_manipulation_functions.html b/pulls/1961/_modules/dpctl/tensor/_manipulation_functions.html deleted file mode 100644 index 9b6701941b..0000000000 --- a/pulls/1961/_modules/dpctl/tensor/_manipulation_functions.html +++ /dev/null @@ -1,1884 +0,0 @@ - - - - - - - - - - - - dpctl.tensor._manipulation_functions - Data Parallel Control (dpctl) 0.19.0dev0 documentation - - - - - - - - - - - - - - - - - - - Contents - - - - - - Menu - - - - - - - - Expand - - - - - - Light mode - - - - - - - - - - - - - - Dark mode - - - - - - - Auto light/dark, in light mode - - - - - - - - - - - - - - - Auto light/dark, in dark mode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Skip to content - - - -
-
-
- -
- -
-
- -
- -
-
- -
-
-
- - - - - Back to top - -
-
- -
- -
-
-

Source code for dpctl.tensor._manipulation_functions

-#                       Data Parallel Control (dpctl)
-#
-#  Copyright 2020-2025 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.
-
-
-import itertools
-import operator
-
-import numpy as np
-
-import dpctl
-import dpctl.tensor as dpt
-import dpctl.tensor._tensor_impl as ti
-import dpctl.utils as dputils
-
-from ._copy_utils import _broadcast_strides
-from ._numpy_helper import normalize_axis_index, normalize_axis_tuple
-from ._type_utils import _supported_dtype, _to_device_supported_dtype
-
-__doc__ = (
-    "Implementation module for array manipulation "
-    "functions in :module:`dpctl.tensor`"
-)
-
-
-def _broadcast_shape_impl(shapes):
-    if len(set(shapes)) == 1:
-        return shapes[0]
-    mutable_shapes = False
-    nds = [len(s) for s in shapes]
-    biggest = max(nds)
-    sh_len = len(shapes)
-    for i in range(sh_len):
-        diff = biggest - nds[i]
-        if diff > 0:
-            ty = type(shapes[i])
-            shapes[i] = ty(
-                itertools.chain(itertools.repeat(1, diff), shapes[i])
-            )
-    common_shape = []
-    for axis in range(biggest):
-        lengths = [s[axis] for s in shapes]
-        unique = set(lengths + [1])
-        if len(unique) > 2:
-            raise ValueError(
-                "Shape mismatch: two or more arrays have "
-                f"incompatible dimensions on axis ({axis},)"
-            )
-        elif len(unique) == 2:
-            unique.remove(1)
-            new_length = unique.pop()
-            common_shape.append(new_length)
-            for i in range(sh_len):
-                if shapes[i][axis] == 1:
-                    if not mutable_shapes:
-                        shapes = [list(s) for s in shapes]
-                        mutable_shapes = True
-                    shapes[i][axis] = new_length
-        else:
-            common_shape.append(1)
-
-    return tuple(common_shape)
-
-
-def _broadcast_shapes(*args):
-    """
-    Broadcast the input shapes into a single shape;
-    returns tuple broadcasted shape.
-    """
-    array_shapes = [array.shape for array in args]
-    return _broadcast_shape_impl(array_shapes)
-
-
-
[docs]def permute_dims(X, /, axes): - """permute_dims(x, axes) - - Permute the axes (dimensions) of an array; returns the permuted - array as a view. - - Args: - x (usm_ndarray): input array. - axes (Tuple[int, ...]): tuple containing permutation of - `(0,1,...,N-1)` where `N` is the number of axes (dimensions) - of `x`. - Returns: - usm_ndarray: - An array with permuted axes. - The returned array must has the same data type as `x`, - is created on the same device as `x` and has the same USM allocation - type as `x`. - """ - if not isinstance(X, dpt.usm_ndarray): - raise TypeError(f"Expected usm_ndarray type, got {type(X)}.") - axes = normalize_axis_tuple(axes, X.ndim, "axes") - if not X.ndim == len(axes): - raise ValueError( - "The length of the passed axes does not match " - "to the number of usm_ndarray dimensions." - ) - newstrides = tuple(X.strides[i] for i in axes) - newshape = tuple(X.shape[i] for i in axes) - return dpt.usm_ndarray( - shape=newshape, - dtype=X.dtype, - buffer=X, - strides=newstrides, - offset=X._element_offset, - )
- - -
[docs]def expand_dims(X, /, *, axis=0): - """expand_dims(x, axis) - - Expands the shape of an array by inserting a new axis (dimension) - of size one at the position specified by axis. - - Args: - x (usm_ndarray): - input array - axis (Union[int, Tuple[int]]): - axis position in the expanded axes (zero-based). If `x` has rank - (i.e, number of dimensions) `N`, a valid `axis` must reside - in the closed-interval `[-N-1, N]`. If provided a negative - `axis`, the `axis` position at which to insert a singleton - dimension is computed as `N + axis + 1`. Hence, if - provided `-1`, the resolved axis position is `N` (i.e., - a singleton dimension must be appended to the input array `x`). - If provided `-N-1`, the resolved axis position is `0` (i.e., a - singleton dimension is prepended to the input array `x`). - - Returns: - usm_ndarray: - Returns a view, if possible, and a copy otherwise with the number - of dimensions increased. - The expanded array has the same data type as the input array `x`. - The expanded array is located on the same device as the input - array, and has the same USM allocation type. - - Raises: - IndexError: if `axis` value is invalid. - """ - if not isinstance(X, dpt.usm_ndarray): - raise TypeError(f"Expected usm_ndarray type, got {type(X)}.") - - if type(axis) not in (tuple, list): - axis = (axis,) - - out_ndim = len(axis) + X.ndim - axis = normalize_axis_tuple(axis, out_ndim) - - shape_it = iter(X.shape) - shape = tuple(1 if ax in axis else next(shape_it) for ax in range(out_ndim)) - - return dpt.reshape(X, shape)
- - -
[docs]def squeeze(X, /, axis=None): - """squeeze(x, axis) - - Removes singleton dimensions (axes) from array `x`. - - Args: - x (usm_ndarray): input array - axis (Union[int, Tuple[int,...]]): axis (or axes) to squeeze. - - Returns: - usm_ndarray: - Output array is a view, if possible, - and a copy otherwise, but with all or a subset of the - dimensions of length 1 removed. Output has the same data - type as the input, is allocated on the same device as the - input and has the same USM allocation type as the input - array `x`. - - Raises: - ValueError: if the specified axis has a size greater than one. - """ - if not isinstance(X, dpt.usm_ndarray): - raise TypeError(f"Expected usm_ndarray type, got {type(X)}.") - X_shape = X.shape - if axis is not None: - axis = normalize_axis_tuple(axis, X.ndim if X.ndim != 0 else X.ndim + 1) - new_shape = [] - for i, x in enumerate(X_shape): - if i not in axis: - new_shape.append(x) - else: - if x != 1: - raise ValueError( - "Cannot select an axis to squeeze out " - "which has size not equal to one." - ) - new_shape = tuple(new_shape) - else: - new_shape = tuple(axis for axis in X_shape if axis != 1) - if new_shape == X.shape: - return X - else: - return dpt.reshape(X, new_shape)
- - -
[docs]def broadcast_to(X, /, shape): - """broadcast_to(x, shape) - - Broadcast an array to a new `shape`; returns the broadcasted - :class:`dpctl.tensor.usm_ndarray` as a view. - - Args: - x (usm_ndarray): input array - shape (Tuple[int,...]): array shape. The `shape` must be - compatible with `x` according to broadcasting rules. - - Returns: - usm_ndarray: - An array with the specified `shape`. - The output array is a view of the input array, and - hence has the same data type, USM allocation type and - device attributes. - """ - if not isinstance(X, dpt.usm_ndarray): - raise TypeError(f"Expected usm_ndarray type, got {type(X)}.") - - # Use numpy.broadcast_to to check the validity of the input - # parameter 'shape'. Raise ValueError if 'X' is not compatible - # with 'shape' according to NumPy's broadcasting rules. - new_array = np.broadcast_to( - np.broadcast_to(np.empty(tuple(), dtype="u1"), X.shape), shape - ) - new_sts = _broadcast_strides(X.shape, X.strides, new_array.ndim) - return dpt.usm_ndarray( - shape=new_array.shape, - dtype=X.dtype, - buffer=X, - strides=new_sts, - offset=X._element_offset, - )
- - -
[docs]def broadcast_arrays(*args): - """broadcast_arrays(*arrays) - - Broadcasts one or more :class:`dpctl.tensor.usm_ndarrays` against - one another. - - Args: - arrays (usm_ndarray): an arbitrary number of arrays to be - broadcasted. - - Returns: - List[usm_ndarray]: - A list of broadcasted arrays. Each array - must have the same shape. Each array must have the same `dtype`, - `device` and `usm_type` attributes as its corresponding input - array. - """ - if len(args) == 0: - raise ValueError("`broadcast_arrays` requires at least one argument") - for X in args: - if not isinstance(X, dpt.usm_ndarray): - raise TypeError(f"Expected usm_ndarray type, got {type(X)}.") - - shape = _broadcast_shapes(*args) - - if all(X.shape == shape for X in args): - return args - - return [broadcast_to(X, shape) for X in args]
- - -
[docs]def flip(X, /, *, axis=None): - """flip(x, axis) - - Reverses the order of elements in an array `x` along the given `axis`. - The shape of the array is preserved, but the elements are reordered. - - Args: - x (usm_ndarray): input array. - axis (Optional[Union[int, Tuple[int,...]]]): axis (or axes) along - which to flip. - If `axis` is `None`, all input array axes are flipped. - If `axis` is negative, the flipped axis is counted from the - last dimension. If provided more than one axis, only the specified - axes are flipped. Default: `None`. - - Returns: - usm_ndarray: - A view of `x` with the entries of `axis` reversed. - """ - if not isinstance(X, dpt.usm_ndarray): - raise TypeError(f"Expected usm_ndarray type, got {type(X)}.") - X_ndim = X.ndim - if axis is None: - indexer = (np.s_[::-1],) * X_ndim - else: - axis = normalize_axis_tuple(axis, X_ndim) - indexer = tuple( - np.s_[::-1] if i in axis else np.s_[:] for i in range(X.ndim) - ) - return X[indexer]
- - -
[docs]def roll(x, /, shift, *, axis=None): - """ - roll(x, shift, axis) - - Rolls array elements along a specified axis. - Array elements that roll beyond the last position are re-introduced - at the first position. Array elements that roll beyond the first position - are re-introduced at the last position. - - Args: - x (usm_ndarray): input array - shift (Union[int, Tuple[int,...]]): number of places by which the - elements are shifted. If `shift` is a tuple, then `axis` must be a - tuple of the same size, and each of the given axes must be shifted - by the corresponding element in `shift`. If `shift` is an `int` - and `axis` a tuple, then the same `shift` must be used for all - specified axes. If a `shift` is positive, then array elements is - shifted positively (toward larger indices) along the dimension of - `axis`. - If a `shift` is negative, then array elements must be shifted - negatively (toward smaller indices) along the dimension of `axis`. - axis (Optional[Union[int, Tuple[int,...]]]): axis (or axes) along which - elements to shift. If `axis` is `None`, the array is - flattened, shifted, and then restored to its original shape. - Default: `None`. - - Returns: - usm_ndarray: - An array having the same `dtype`, `usm_type` and - `device` attributes as `x` and whose elements are shifted relative - to `x`. - """ - if not isinstance(x, dpt.usm_ndarray): - raise TypeError(f"Expected usm_ndarray type, got {type(x)}.") - exec_q = x.sycl_queue - _manager = dputils.SequentialOrderManager[exec_q] - if axis is None: - shift = operator.index(shift) - res = dpt.empty( - x.shape, dtype=x.dtype, usm_type=x.usm_type, sycl_queue=exec_q - ) - sz = operator.index(x.size) - shift = (shift % sz) if sz > 0 else 0 - dep_evs = _manager.submitted_events - hev, roll_ev = ti._copy_usm_ndarray_for_roll_1d( - src=x, - dst=res, - shift=shift, - sycl_queue=exec_q, - depends=dep_evs, - ) - _manager.add_event_pair(hev, roll_ev) - return res - axis = normalize_axis_tuple(axis, x.ndim, allow_duplicate=True) - broadcasted = np.broadcast(shift, axis) - if broadcasted.ndim > 1: - raise ValueError("'shift' and 'axis' should be scalars or 1D sequences") - shifts = [ - 0, - ] * x.ndim - shape = x.shape - for sh, ax in broadcasted: - n_i = operator.index(shape[ax]) - shifted = shifts[ax] + operator.index(sh) - shifts[ax] = (shifted % n_i) if n_i > 0 else 0 - res = dpt.empty( - x.shape, dtype=x.dtype, usm_type=x.usm_type, sycl_queue=exec_q - ) - dep_evs = _manager.submitted_events - ht_e, roll_ev = ti._copy_usm_ndarray_for_roll_nd( - src=x, dst=res, shifts=shifts, sycl_queue=exec_q, depends=dep_evs - ) - _manager.add_event_pair(ht_e, roll_ev) - return res
- - -def _arrays_validation(arrays, check_ndim=True): - n = len(arrays) - if n == 0: - raise TypeError("Missing 1 required positional argument: 'arrays'.") - - if not isinstance(arrays, (list, tuple)): - raise TypeError(f"Expected tuple or list type, got {type(arrays)}.") - - for X in arrays: - if not isinstance(X, dpt.usm_ndarray): - raise TypeError(f"Expected usm_ndarray type, got {type(X)}.") - - exec_q = dputils.get_execution_queue([X.sycl_queue for X in arrays]) - if exec_q is None: - raise ValueError("All the input arrays must have same sycl queue.") - - res_usm_type = dputils.get_coerced_usm_type([X.usm_type for X in arrays]) - if res_usm_type is None: - raise ValueError("All the input arrays must have usm_type.") - - X0 = arrays[0] - _supported_dtype(Xi.dtype for Xi in arrays) - - res_dtype = X0.dtype - dev = exec_q.sycl_device - for i in range(1, n): - res_dtype = np.promote_types(res_dtype, arrays[i]) - res_dtype = _to_device_supported_dtype(res_dtype, dev) - - if check_ndim: - for i in range(1, n): - if X0.ndim != arrays[i].ndim: - raise ValueError( - "All the input arrays must have same number of dimensions, " - f"but the array at index 0 has {X0.ndim} dimension(s) and " - f"the array at index {i} has {arrays[i].ndim} dimension(s)." - ) - return res_dtype, res_usm_type, exec_q - - -def _check_same_shapes(X0_shape, axis, n, arrays): - for i in range(1, n): - Xi_shape = arrays[i].shape - for j, X0j in enumerate(X0_shape): - if X0j != Xi_shape[j] and j != axis: - raise ValueError( - "All the input array dimensions for the concatenation " - f"axis must match exactly, but along dimension {j}, the " - f"array at index 0 has size {X0j} and the array " - f"at index {i} has size {Xi_shape[j]}." - ) - - -def _concat_axis_None(arrays): - "Implementation of concat(arrays, axis=None)." - res_dtype, res_usm_type, exec_q = _arrays_validation( - arrays, check_ndim=False - ) - res_shape = 0 - for array in arrays: - res_shape += array.size - res = dpt.empty( - res_shape, dtype=res_dtype, usm_type=res_usm_type, sycl_queue=exec_q - ) - - fill_start = 0 - _manager = dputils.SequentialOrderManager[exec_q] - deps = _manager.submitted_events - for array in arrays: - fill_end = fill_start + array.size - if array.flags.c_contiguous: - hev, cpy_ev = ti._copy_usm_ndarray_into_usm_ndarray( - src=dpt.reshape(array, -1), - dst=res[fill_start:fill_end], - sycl_queue=exec_q, - depends=deps, - ) - _manager.add_event_pair(hev, cpy_ev) - else: - src_ = array - # _copy_usm_ndarray_for_reshape requires src and dst to have - # the same data type - if not array.dtype == res_dtype: - src2_ = dpt.empty_like(src_, dtype=res_dtype) - ht_copy_ev, cpy_ev = ti._copy_usm_ndarray_into_usm_ndarray( - src=src_, dst=src2_, sycl_queue=exec_q, depends=deps - ) - _manager.add_event_pair(ht_copy_ev, cpy_ev) - hev, reshape_copy_ev = ti._copy_usm_ndarray_for_reshape( - src=src2_, - dst=res[fill_start:fill_end], - sycl_queue=exec_q, - depends=[cpy_ev], - ) - _manager.add_event_pair(hev, reshape_copy_ev) - else: - hev, cpy_ev = ti._copy_usm_ndarray_for_reshape( - src=src_, - dst=res[fill_start:fill_end], - sycl_queue=exec_q, - depends=deps, - ) - _manager.add_event_pair(hev, cpy_ev) - fill_start = fill_end - - return res - - -
[docs]def concat(arrays, /, *, axis=0): - """concat(arrays, axis) - - Joins a sequence of arrays along an existing axis. - - Args: - arrays (Union[List[usm_ndarray, Tuple[usm_ndarray,...]]]): - input arrays to join. The arrays must have the same shape, - except in the dimension specified by `axis`. - axis (Optional[int]): axis along which the arrays will be joined. - If `axis` is `None`, arrays must be flattened before - concatenation. If `axis` is negative, it is understood as - being counted from the last dimension. Default: `0`. - - Returns: - usm_ndarray: - An output array containing the concatenated - values. The output array data type is determined by Type - Promotion Rules of array API. - - All input arrays must have the same device attribute. The output array - is allocated on that same device, and data movement operations are - scheduled on a queue underlying the device. The USM allocation type - of the output array is determined by USM allocation type promotion - rules. - """ - if axis is None: - return _concat_axis_None(arrays) - - res_dtype, res_usm_type, exec_q = _arrays_validation(arrays) - n = len(arrays) - X0 = arrays[0] - - axis = normalize_axis_index(axis, X0.ndim) - X0_shape = X0.shape - _check_same_shapes(X0_shape, axis, n, arrays) - - res_shape_axis = 0 - for X in arrays: - res_shape_axis = res_shape_axis + X.shape[axis] - - res_shape = tuple( - X0_shape[i] if i != axis else res_shape_axis for i in range(X0.ndim) - ) - - res = dpt.empty( - res_shape, dtype=res_dtype, usm_type=res_usm_type, sycl_queue=exec_q - ) - - _manager = dputils.SequentialOrderManager[exec_q] - deps = _manager.submitted_events - fill_start = 0 - for i in range(n): - fill_end = fill_start + arrays[i].shape[axis] - c_shapes_copy = tuple( - np.s_[fill_start:fill_end] if j == axis else np.s_[:] - for j in range(X0.ndim) - ) - hev, cpy_ev = ti._copy_usm_ndarray_into_usm_ndarray( - src=arrays[i], - dst=res[c_shapes_copy], - sycl_queue=exec_q, - depends=deps, - ) - _manager.add_event_pair(hev, cpy_ev) - fill_start = fill_end - - return res
- - -
[docs]def stack(arrays, /, *, axis=0): - """ - stack(arrays, axis) - - Joins a sequence of arrays along a new axis. - - Args: - arrays (Union[List[usm_ndarray], Tuple[usm_ndarray,...]]): - input arrays to join. Each array must have the same shape. - axis (int): axis along which the arrays will be joined. Providing - an `axis` specified the index of the new axis in the dimensions - of the output array. A valid axis must be on the interval - `[-N, N)`, where `N` is the rank (number of dimensions) of `x`. - Default: `0`. - - Returns: - usm_ndarray: - An output array having rank `N+1`, where `N` is - the rank (number of dimensions) of `x`. If the input arrays have - different data types, array API Type Promotion Rules apply. - - Raises: - ValueError: if not all input arrays have the same shape - IndexError: if provided an `axis` outside of the required interval. - """ - res_dtype, res_usm_type, exec_q = _arrays_validation(arrays) - - n = len(arrays) - X0 = arrays[0] - res_ndim = X0.ndim + 1 - axis = normalize_axis_index(axis, res_ndim) - X0_shape = X0.shape - - for i in range(1, n): - if X0_shape != arrays[i].shape: - raise ValueError("All input arrays must have the same shape") - - res_shape = tuple( - X0_shape[i - 1 * (i >= axis)] if i != axis else n - for i in range(res_ndim) - ) - - res = dpt.empty( - res_shape, dtype=res_dtype, usm_type=res_usm_type, sycl_queue=exec_q - ) - - _manager = dputils.SequentialOrderManager[exec_q] - dep_evs = _manager.submitted_events - for i in range(n): - c_shapes_copy = tuple( - i if j == axis else np.s_[:] for j in range(res_ndim) - ) - _dst = res[c_shapes_copy] - hev, cpy_ev = ti._copy_usm_ndarray_into_usm_ndarray( - src=arrays[i], dst=_dst, sycl_queue=exec_q, depends=dep_evs - ) - _manager.add_event_pair(hev, cpy_ev) - - return res
- - -
[docs]def unstack(X, /, *, axis=0): - """unstack(x, axis=0) - - Splits an array in a sequence of arrays along the given axis. - - Args: - x (usm_ndarray): input array - - axis (int, optional): axis along which `x` is unstacked. - If `x` has rank (i.e, number of dimensions) `N`, - a valid `axis` must reside in the half-open interval `[-N, N)`. - Default: `0`. - - Returns: - Tuple[usm_ndarray,...]: - Output sequence of arrays which are views into the input array. - - Raises: - AxisError: if the `axis` value is invalid. - """ - if not isinstance(X, dpt.usm_ndarray): - raise TypeError(f"Expected usm_ndarray type, got {type(X)}.") - - axis = normalize_axis_index(axis, X.ndim) - Y = dpt.moveaxis(X, axis, 0) - - return tuple(Y[i] for i in range(Y.shape[0]))
- - -
[docs]def moveaxis(X, source, destination, /): - """moveaxis(x, source, destination) - - Moves axes of an array to new positions. - - Args: - x (usm_ndarray): input array - - source (int or a sequence of int): - Original positions of the axes to move. - These must be unique. If `x` has rank (i.e., number of - dimensions) `N`, a valid `axis` must be in the - half-open interval `[-N, N)`. - - destination (int or a sequence of int): - Destination positions for each of the original axes. - These must also be unique. If `x` has rank - (i.e., number of dimensions) `N`, a valid `axis` must be - in the half-open interval `[-N, N)`. - - Returns: - usm_ndarray: - Array with moved axes. - The returned array must has the same data type as `x`, - is created on the same device as `x` and has the same - USM allocation type as `x`. - - Raises: - AxisError: if `axis` value is invalid. - ValueError: if `src` and `dst` have not equal number of elements. - """ - if not isinstance(X, dpt.usm_ndarray): - raise TypeError(f"Expected usm_ndarray type, got {type(X)}.") - - source = normalize_axis_tuple(source, X.ndim, "source") - destination = normalize_axis_tuple(destination, X.ndim, "destination") - - if len(source) != len(destination): - raise ValueError( - "`source` and `destination` arguments must have " - "the same number of elements" - ) - - ind = [n for n in range(X.ndim) if n not in source] - - for src, dst in sorted(zip(destination, source)): - ind.insert(src, dst) - - return dpt.permute_dims(X, tuple(ind))
- - -def swapaxes(X, axis1, axis2): - """swapaxes(x, axis1, axis2) - - Interchanges two axes of an array. - - Args: - x (usm_ndarray): input array - - axis1 (int): First axis. - If `x` has rank (i.e., number of dimensions) `N`, - a valid `axis` must be in the half-open interval `[-N, N)`. - - axis2 (int): Second axis. - If `x` has rank (i.e., number of dimensions) `N`, - a valid `axis` must be in the half-open interval `[-N, N)`. - - Returns: - usm_ndarray: - Array with swapped axes. - The returned array must has the same data type as `x`, - is created on the same device as `x` and has the same USM - allocation type as `x`. - - Raises: - AxisError: if `axis` value is invalid. - """ - if not isinstance(X, dpt.usm_ndarray): - raise TypeError(f"Expected usm_ndarray type, got {type(X)}.") - - axis1 = normalize_axis_index(axis1, X.ndim, "axis1") - axis2 = normalize_axis_index(axis2, X.ndim, "axis2") - - ind = list(range(0, X.ndim)) - ind[axis1] = axis2 - ind[axis2] = axis1 - return dpt.permute_dims(X, tuple(ind)) - - -
[docs]def repeat(x, repeats, /, *, axis=None): - """repeat(x, repeats, axis=None) - - Repeat elements of an array on a per-element basis. - - Args: - x (usm_ndarray): input array - - repeats (Union[int, Sequence[int, ...], usm_ndarray]): - The number of repetitions for each element. - - `repeats` must be broadcast-compatible with `N` where `N` is - `prod(x.shape)` if `axis` is `None` and `x.shape[axis]` - otherwise. - - If `repeats` is an array, it must have an integer data type. - Otherwise, `repeats` must be a Python integer or sequence of - Python integers (i.e., a tuple, list, or range). - - axis (Optional[int]): - The axis along which to repeat values. If `axis` is `None`, the - function repeats elements of the flattened array. Default: `None`. - - Returns: - usm_ndarray: - output array with repeated elements. - - If `axis` is `None`, the returned array is one-dimensional, - otherwise, it has the same shape as `x`, except for the axis along - which elements were repeated. - - The returned array will have the same data type as `x`. - The returned array will be located on the same device as `x` and - have the same USM allocation type as `x`. - - Raises: - AxisError: if `axis` value is invalid. - """ - if not isinstance(x, dpt.usm_ndarray): - raise TypeError(f"Expected usm_ndarray type, got {type(x)}.") - - x_ndim = x.ndim - x_shape = x.shape - if axis is not None: - axis = normalize_axis_index(operator.index(axis), x_ndim) - axis_size = x_shape[axis] - else: - axis_size = x.size - - scalar = False - if isinstance(repeats, int): - if repeats < 0: - raise ValueError("`repeats` must be a positive integer") - usm_type = x.usm_type - exec_q = x.sycl_queue - scalar = True - elif isinstance(repeats, dpt.usm_ndarray): - if repeats.ndim > 1: - raise ValueError( - "`repeats` array must be 0- or 1-dimensional, got " - f"{repeats.ndim}" - ) - exec_q = dpctl.utils.get_execution_queue( - (x.sycl_queue, repeats.sycl_queue) - ) - if exec_q is None: - raise dputils.ExecutionPlacementError( - "Execution placement can not be unambiguously inferred " - "from input arguments." - ) - usm_type = dpctl.utils.get_coerced_usm_type( - ( - x.usm_type, - repeats.usm_type, - ) - ) - dpctl.utils.validate_usm_type(usm_type, allow_none=False) - if not dpt.can_cast(repeats.dtype, dpt.int64, casting="same_kind"): - raise TypeError( - f"'repeats' data type {repeats.dtype} cannot be cast to " - "'int64' according to the casting rule ''safe.''" - ) - if repeats.size == 1: - scalar = True - # bring the single element to the host - repeats = int(repeats) - if repeats < 0: - raise ValueError("`repeats` elements must be positive") - else: - if repeats.size != axis_size: - raise ValueError( - "'repeats' array must be broadcastable to the size of " - "the repeated axis" - ) - if not dpt.all(repeats >= 0): - raise ValueError("'repeats' elements must be positive") - - elif isinstance(repeats, (tuple, list, range)): - usm_type = x.usm_type - exec_q = x.sycl_queue - - len_reps = len(repeats) - if len_reps == 1: - repeats = repeats[0] - if repeats < 0: - raise ValueError("`repeats` elements must be positive") - scalar = True - else: - if len_reps != axis_size: - raise ValueError( - "`repeats` sequence must have the same length as the " - "repeated axis" - ) - repeats = dpt.asarray( - repeats, dtype=dpt.int64, usm_type=usm_type, sycl_queue=exec_q - ) - if not dpt.all(repeats >= 0): - raise ValueError("`repeats` elements must be positive") - else: - raise TypeError( - "Expected int, sequence, or `usm_ndarray` for second argument," - f"got {type(repeats)}" - ) - - _manager = dputils.SequentialOrderManager[exec_q] - dep_evs = _manager.submitted_events - if scalar: - res_axis_size = repeats * axis_size - if axis is not None: - res_shape = x_shape[:axis] + (res_axis_size,) + x_shape[axis + 1 :] - else: - res_shape = (res_axis_size,) - res = dpt.empty( - res_shape, dtype=x.dtype, usm_type=usm_type, sycl_queue=exec_q - ) - if res_axis_size > 0: - ht_rep_ev, rep_ev = ti._repeat_by_scalar( - src=x, - dst=res, - reps=repeats, - axis=axis, - sycl_queue=exec_q, - depends=dep_evs, - ) - _manager.add_event_pair(ht_rep_ev, rep_ev) - else: - if repeats.dtype != dpt.int64: - rep_buf = dpt.empty( - repeats.shape, - dtype=dpt.int64, - usm_type=usm_type, - sycl_queue=exec_q, - ) - ht_copy_ev, copy_ev = ti._copy_usm_ndarray_into_usm_ndarray( - src=repeats, dst=rep_buf, sycl_queue=exec_q, depends=dep_evs - ) - _manager.add_event_pair(ht_copy_ev, copy_ev) - cumsum = dpt.empty( - (axis_size,), - dtype=dpt.int64, - usm_type=usm_type, - sycl_queue=exec_q, - ) - # _cumsum_1d synchronizes so `depends` ends here safely - res_axis_size = ti._cumsum_1d( - rep_buf, cumsum, sycl_queue=exec_q, depends=[copy_ev] - ) - if axis is not None: - res_shape = ( - x_shape[:axis] + (res_axis_size,) + x_shape[axis + 1 :] - ) - else: - res_shape = (res_axis_size,) - res = dpt.empty( - res_shape, - dtype=x.dtype, - usm_type=usm_type, - sycl_queue=exec_q, - ) - if res_axis_size > 0: - ht_rep_ev, rep_ev = ti._repeat_by_sequence( - src=x, - dst=res, - reps=rep_buf, - cumsum=cumsum, - axis=axis, - sycl_queue=exec_q, - ) - _manager.add_event_pair(ht_rep_ev, rep_ev) - else: - cumsum = dpt.empty( - (axis_size,), - dtype=dpt.int64, - usm_type=usm_type, - sycl_queue=exec_q, - ) - res_axis_size = ti._cumsum_1d( - repeats, cumsum, sycl_queue=exec_q, depends=dep_evs - ) - if axis is not None: - res_shape = ( - x_shape[:axis] + (res_axis_size,) + x_shape[axis + 1 :] - ) - else: - res_shape = (res_axis_size,) - res = dpt.empty( - res_shape, - dtype=x.dtype, - usm_type=usm_type, - sycl_queue=exec_q, - ) - if res_axis_size > 0: - ht_rep_ev, rep_ev = ti._repeat_by_sequence( - src=x, - dst=res, - reps=repeats, - cumsum=cumsum, - axis=axis, - sycl_queue=exec_q, - ) - _manager.add_event_pair(ht_rep_ev, rep_ev) - return res
- - -
[docs]def tile(x, repetitions, /): - """tile(x, repetitions) - - Repeat an input array `x` along each axis a number of times given by - `repetitions`. - - For `N` = len(`repetitions`) and `M` = len(`x.shape`): - - * If `M < N`, `x` will have `N - M` new axes prepended to its shape - * If `M > N`, `repetitions` will have `M - N` ones prepended to it - - Args: - x (usm_ndarray): input array - - repetitions (Union[int, Tuple[int, ...]]): - The number of repetitions along each dimension of `x`. - - Returns: - usm_ndarray: - tiled output array. - - The returned array will have rank `max(M, N)`. If `S` is the - shape of `x` after prepending dimensions and `R` is - `repetitions` after prepending ones, then the shape of the - result will be `S[i] * R[i]` for each dimension `i`. - - The returned array will have the same data type as `x`. - The returned array will be located on the same device as `x` and - have the same USM allocation type as `x`. - """ - if not isinstance(x, dpt.usm_ndarray): - raise TypeError(f"Expected usm_ndarray type, got {type(x)}.") - - if not isinstance(repetitions, tuple): - if isinstance(repetitions, int): - repetitions = (repetitions,) - else: - raise TypeError( - f"Expected tuple or integer type, got {type(repetitions)}." - ) - - rep_dims = len(repetitions) - x_dims = x.ndim - if rep_dims < x_dims: - repetitions = (x_dims - rep_dims) * (1,) + repetitions - elif x_dims < rep_dims: - x = dpt.reshape(x, (rep_dims - x_dims) * (1,) + x.shape) - res_shape = tuple(map(lambda sh, rep: sh * rep, x.shape, repetitions)) - # case of empty input - if x.size == 0: - return dpt.empty( - res_shape, - dtype=x.dtype, - usm_type=x.usm_type, - sycl_queue=x.sycl_queue, - ) - in_sh = x.shape - if res_shape == in_sh: - return dpt.copy(x) - expanded_sh = [] - broadcast_sh = [] - out_sz = 1 - for i in range(len(res_shape)): - out_sz *= res_shape[i] - reps, sh = repetitions[i], in_sh[i] - if reps == 1: - # dimension will be unchanged - broadcast_sh.append(sh) - expanded_sh.append(sh) - elif sh == 1: - # dimension will be broadcast - broadcast_sh.append(reps) - expanded_sh.append(sh) - else: - broadcast_sh.extend([reps, sh]) - expanded_sh.extend([1, sh]) - exec_q = x.sycl_queue - xdt = x.dtype - xut = x.usm_type - res = dpt.empty((out_sz,), dtype=xdt, usm_type=xut, sycl_queue=exec_q) - # no need to copy data for empty output - if out_sz > 0: - x = dpt.broadcast_to( - # this reshape should never copy - dpt.reshape(x, expanded_sh), - broadcast_sh, - ) - # copy broadcast input into flat array - _manager = dputils.SequentialOrderManager[exec_q] - dep_evs = _manager.submitted_events - hev, cp_ev = ti._copy_usm_ndarray_for_reshape( - src=x, dst=res, sycl_queue=exec_q, depends=dep_evs - ) - _manager.add_event_pair(hev, cp_ev) - return dpt.reshape(res, res_shape)
-
-
-
-
- - -
-
- - Made with Sphinx and @pradyunsg's - - Furo - -
-
- -
-
- -
-
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/pulls/1961/_modules/dpctl/tensor/_reduction.html b/pulls/1961/_modules/dpctl/tensor/_reduction.html deleted file mode 100644 index a35059d975..0000000000 --- a/pulls/1961/_modules/dpctl/tensor/_reduction.html +++ /dev/null @@ -1,1637 +0,0 @@ - - - - - - - - - - - - dpctl.tensor._reduction - Data Parallel Control (dpctl) 0.19.0dev0 documentation - - - - - - - - - - - - - - - - - - - Contents - - - - - - Menu - - - - - - - - Expand - - - - - - Light mode - - - - - - - - - - - - - - Dark mode - - - - - - - Auto light/dark, in light mode - - - - - - - - - - - - - - - Auto light/dark, in dark mode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Skip to content - - - -
-
-
- -
- -
-
- -
- -
-
- -
-
-
- - - - - Back to top - -
-
- -
- -
-
-

Source code for dpctl.tensor._reduction

-#                       Data Parallel Control (dpctl)
-#
-#  Copyright 2020-2025 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.
-
-import dpctl
-import dpctl.tensor as dpt
-import dpctl.tensor._tensor_impl as ti
-import dpctl.tensor._tensor_reductions_impl as tri
-from dpctl.utils import ExecutionPlacementError, SequentialOrderManager
-
-from ._numpy_helper import normalize_axis_tuple
-from ._type_utils import (
-    _default_accumulation_dtype,
-    _default_accumulation_dtype_fp_types,
-    _to_device_supported_dtype,
-)
-
-
-def _reduction_over_axis(
-    x,
-    axis,
-    dtype,
-    keepdims,
-    out,
-    _reduction_fn,
-    _dtype_supported,
-    _default_reduction_type_fn,
-):
-    if not isinstance(x, dpt.usm_ndarray):
-        raise TypeError(f"Expected dpctl.tensor.usm_ndarray, got {type(x)}")
-    nd = x.ndim
-    if axis is None:
-        axis = tuple(range(nd))
-        perm = list(axis)
-        arr = x
-    else:
-        if not isinstance(axis, (tuple, list)):
-            axis = (axis,)
-        axis = normalize_axis_tuple(axis, nd, "axis")
-        perm = [i for i in range(nd) if i not in axis] + list(axis)
-        arr = dpt.permute_dims(x, perm)
-    red_nd = len(axis)
-    res_shape = arr.shape[: nd - red_nd]
-    q = x.sycl_queue
-    inp_dt = x.dtype
-    if dtype is None:
-        res_dt = _default_reduction_type_fn(inp_dt, q)
-    else:
-        res_dt = dpt.dtype(dtype)
-        res_dt = _to_device_supported_dtype(res_dt, q.sycl_device)
-
-    res_usm_type = x.usm_type
-
-    implemented_types = _dtype_supported(inp_dt, res_dt, res_usm_type, q)
-    if dtype is None and not implemented_types:
-        raise RuntimeError(
-            "Automatically determined reduction data type does not "
-            "have direct implementation"
-        )
-    orig_out = out
-    if out is not None:
-        if not isinstance(out, dpt.usm_ndarray):
-            raise TypeError(
-                f"output array must be of usm_ndarray type, got {type(out)}"
-            )
-        if not out.flags.writable:
-            raise ValueError("provided `out` array is read-only")
-        if not keepdims:
-            final_res_shape = res_shape
-        else:
-            inp_shape = x.shape
-            final_res_shape = tuple(
-                inp_shape[i] if i not in axis else 1 for i in range(nd)
-            )
-        if not out.shape == final_res_shape:
-            raise ValueError(
-                "The shape of input and output arrays are inconsistent. "
-                f"Expected output shape is {final_res_shape}, got {out.shape}"
-            )
-        if res_dt != out.dtype:
-            raise ValueError(
-                f"Output array of type {res_dt} is needed, got {out.dtype}"
-            )
-        if dpctl.utils.get_execution_queue((q, out.sycl_queue)) is None:
-            raise ExecutionPlacementError(
-                "Input and output allocation queues are not compatible"
-            )
-        if keepdims:
-            out = dpt.squeeze(out, axis=axis)
-            orig_out = out
-        if ti._array_overlap(x, out) and implemented_types:
-            out = dpt.empty_like(out)
-    else:
-        out = dpt.empty(
-            res_shape, dtype=res_dt, usm_type=res_usm_type, sycl_queue=q
-        )
-
-    _manager = SequentialOrderManager[q]
-    dep_evs = _manager.submitted_events
-    if red_nd == 0:
-        ht_e_cpy, cpy_e = ti._copy_usm_ndarray_into_usm_ndarray(
-            src=arr, dst=out, sycl_queue=q, depends=dep_evs
-        )
-        _manager.add_event_pair(ht_e_cpy, cpy_e)
-        if not (orig_out is None or orig_out is out):
-            ht_e_cpy2, cpy2_e = ti._copy_usm_ndarray_into_usm_ndarray(
-                src=out, dst=orig_out, sycl_queue=q, depends=[cpy_e]
-            )
-            _manager.add_event_pair(ht_e_cpy2, cpy2_e)
-            out = orig_out
-        return out
-
-    if implemented_types:
-        ht_e, red_e = _reduction_fn(
-            src=arr,
-            trailing_dims_to_reduce=red_nd,
-            dst=out,
-            sycl_queue=q,
-            depends=dep_evs,
-        )
-        _manager.add_event_pair(ht_e, red_e)
-        if not (orig_out is None or orig_out is out):
-            ht_e_cpy, cpy_e = ti._copy_usm_ndarray_into_usm_ndarray(
-                src=out, dst=orig_out, sycl_queue=q, depends=[red_e]
-            )
-            _manager.add_event_pair(ht_e_cpy, cpy_e)
-            out = orig_out
-    else:
-        if _dtype_supported(res_dt, res_dt, res_usm_type, q):
-            tmp = dpt.empty(
-                arr.shape, dtype=res_dt, usm_type=res_usm_type, sycl_queue=q
-            )
-            ht_e_cpy, cpy_e = ti._copy_usm_ndarray_into_usm_ndarray(
-                src=arr, dst=tmp, sycl_queue=q, depends=dep_evs
-            )
-            _manager.add_event_pair(ht_e_cpy, cpy_e)
-            ht_e_red, red_ev = _reduction_fn(
-                src=tmp,
-                trailing_dims_to_reduce=red_nd,
-                dst=out,
-                sycl_queue=q,
-                depends=[cpy_e],
-            )
-            _manager.add_event_pair(ht_e_red, red_ev)
-        else:
-            buf_dt = _default_reduction_type_fn(inp_dt, q)
-            tmp = dpt.empty(
-                arr.shape, dtype=buf_dt, usm_type=res_usm_type, sycl_queue=q
-            )
-            ht_e_cpy, cpy_e = ti._copy_usm_ndarray_into_usm_ndarray(
-                src=arr, dst=tmp, sycl_queue=q, depends=dep_evs
-            )
-            _manager.add_event_pair(ht_e_cpy, cpy_e)
-            tmp_res = dpt.empty(
-                res_shape, dtype=buf_dt, usm_type=res_usm_type, sycl_queue=q
-            )
-            ht_e_red, r_e = _reduction_fn(
-                src=tmp,
-                trailing_dims_to_reduce=red_nd,
-                dst=tmp_res,
-                sycl_queue=q,
-                depends=[cpy_e],
-            )
-            _manager.add_event_pair(ht_e_red, r_e)
-            ht_e_cpy2, cpy2_e = ti._copy_usm_ndarray_into_usm_ndarray(
-                src=tmp_res, dst=out, sycl_queue=q, depends=[r_e]
-            )
-            _manager.add_event_pair(ht_e_cpy2, cpy2_e)
-
-    if keepdims:
-        res_shape = res_shape + (1,) * red_nd
-        inv_perm = sorted(range(nd), key=lambda d: perm[d])
-        out = dpt.permute_dims(dpt.reshape(out, res_shape), inv_perm)
-    return out
-
-
-
[docs]def sum(x, /, *, axis=None, dtype=None, keepdims=False, out=None): - """ - Calculates the sum of elements in the input array ``x``. - - Args: - x (usm_ndarray): - input array. - axis (Optional[int, Tuple[int, ...]]): - axis or axes along which sums must be computed. If a tuple - of unique integers, sums are computed over multiple axes. - If ``None``, the sum is computed over the entire array. - Default: ``None``. - dtype (Optional[dtype]): - data type of the returned array. If ``None``, the default data - type is inferred from the "kind" of the input array data type. - - * If ``x`` has a real- or complex-valued floating-point data - type, the returned array will have the same data type as - ``x``. - * If ``x`` has signed integral data type, the returned array - will have the default signed integral type for the device - where input array ``x`` is allocated. - * If ``x`` has unsigned integral data type, the returned array - will have the default unsigned integral type for the device - where input array ``x`` is allocated. - array ``x`` is allocated. - * If ``x`` has a boolean data type, the returned array will - have the default signed integral type for the device - where input array ``x`` is allocated. - - If the data type (either specified or resolved) differs from the - data type of ``x``, the input array elements are cast to the - specified data type before computing the sum. - Default: ``None``. - keepdims (Optional[bool]): - if ``True``, the reduced axes (dimensions) are included in the - result as singleton dimensions, so that the returned array remains - compatible with the input arrays according to Array Broadcasting - rules. Otherwise, if ``False``, the reduced axes are not included - in the returned array. Default: ``False``. - out (Optional[usm_ndarray]): - the array into which the result is written. - The data type of ``out`` must match the expected shape and the - expected data type of the result or (if provided) ``dtype``. - If ``None`` then a new array is returned. Default: ``None``. - - Returns: - usm_ndarray: - an array containing the sums. If the sum was computed over the - entire array, a zero-dimensional array is returned. The returned - array has the data type as described in the ``dtype`` parameter - description above. - """ - return _reduction_over_axis( - x, - axis, - dtype, - keepdims, - out, - tri._sum_over_axis, - tri._sum_over_axis_dtype_supported, - _default_accumulation_dtype, - )
- - -
[docs]def prod(x, /, *, axis=None, dtype=None, keepdims=False, out=None): - """ - Calculates the product of elements in the input array ``x``. - - Args: - x (usm_ndarray): - input array. - axis (Optional[int, Tuple[int, ...]]): - axis or axes along which products must be computed. If a tuple - of unique integers, products are computed over multiple axes. - If ``None``, the product is computed over the entire array. - Default: ``None``. - dtype (Optional[dtype]): - data type of the returned array. If ``None``, the default data - type is inferred from the "kind" of the input array data type. - - * If ``x`` has a real- or complex-valued floating-point data - type, the returned array will have the same data type as - ``x``. - * If ``x`` has signed integral data type, the returned array - will have the default signed integral type for the device - where input array ``x`` is allocated. - * If ``x`` has unsigned integral data type, the returned array - will have the default unsigned integral type for the device - where input array ``x`` is allocated. - * If ``x`` has a boolean data type, the returned array will - have the default signed integral type for the device - where input array ``x`` is allocated. - - If the data type (either specified or resolved) differs from the - data type of ``x``, the input array elements are cast to the - specified data type before computing the product. - Default: ``None``. - keepdims (Optional[bool]): - if ``True``, the reduced axes (dimensions) are included in the - result as singleton dimensions, so that the returned array remains - compatible with the input arrays according to Array Broadcasting - rules. Otherwise, if ``False``, the reduced axes are not included - in the returned array. Default: ``False``. - out (Optional[usm_ndarray]): - the array into which the result is written. - The data type of ``out`` must match the expected shape and the - expected data type of the result or (if provided) ``dtype``. - If ``None`` then a new array is returned. Default: ``None``. - - Returns: - usm_ndarray: - an array containing the products. If the product was computed over - the entire array, a zero-dimensional array is returned. The - returned array has the data type as described in the ``dtype`` - parameter description above. - """ - return _reduction_over_axis( - x, - axis, - dtype, - keepdims, - out, - tri._prod_over_axis, - tri._prod_over_axis_dtype_supported, - _default_accumulation_dtype, - )
- - -
[docs]def logsumexp(x, /, *, axis=None, dtype=None, keepdims=False, out=None): - """ - Calculates the logarithm of the sum of exponentials of elements in the - input array ``x``. - - Args: - x (usm_ndarray): - input array. - axis (Optional[int, Tuple[int, ...]]): - axis or axes along which values must be computed. If a tuple - of unique integers, values are computed over multiple axes. - If ``None``, the result is computed over the entire array. - Default: ``None``. - dtype (Optional[dtype]): - data type of the returned array. If ``None``, the default data - type is inferred from the "kind" of the input array data type. - - * If ``x`` has a real-valued floating-point data type, the - returned array will have the same data type as ``x``. - * If ``x`` has a boolean or integral data type, the returned array - will have the default floating point data type for the device - where input array ``x`` is allocated. - * If ``x`` has a complex-valued floating-point data type, - an error is raised. - - If the data type (either specified or resolved) differs from the - data type of ``x``, the input array elements are cast to the - specified data type before computing the result. - Default: ``None``. - keepdims (Optional[bool]): - if ``True``, the reduced axes (dimensions) are included in the - result as singleton dimensions, so that the returned array remains - compatible with the input arrays according to Array Broadcasting - rules. Otherwise, if ``False``, the reduced axes are not included - in the returned array. Default: ``False``. - out (Optional[usm_ndarray]): - the array into which the result is written. - The data type of ``out`` must match the expected shape and the - expected data type of the result or (if provided) ``dtype``. - If ``None`` then a new array is returned. Default: ``None``. - - Returns: - usm_ndarray: - an array containing the results. If the result was computed over - the entire array, a zero-dimensional array is returned. - The returned array has the data type as described in the - ``dtype`` parameter description above. - """ - return _reduction_over_axis( - x, - axis, - dtype, - keepdims, - out, - tri._logsumexp_over_axis, - lambda inp_dt, res_dt, *_: tri._logsumexp_over_axis_dtype_supported( - inp_dt, res_dt - ), - _default_accumulation_dtype_fp_types, - )
- - -
[docs]def reduce_hypot(x, /, *, axis=None, dtype=None, keepdims=False, out=None): - """ - Calculates the square root of the sum of squares of elements in the input - array ``x``. - - Args: - x (usm_ndarray): - input array. - axis (Optional[int, Tuple[int, ...]]): - axis or axes along which values must be computed. If a tuple - of unique integers, values are computed over multiple axes. - If ``None``, the result is computed over the entire array. - Default: ``None``. - dtype (Optional[dtype]): - data type of the returned array. If ``None``, the default data - type is inferred from the "kind" of the input array data type. - - * If ``x`` has a real-valued floating-point data type, the - returned array will have the same data type as ``x``. - * If ``x`` has a boolean or integral data type, the returned array - will have the default floating point data type for the device - where input array ``x`` is allocated. - * If ``x`` has a complex-valued floating-point data type, - an error is raised. - - If the data type (either specified or resolved) differs from the - data type of ``x``, the input array elements are cast to the - specified data type before computing the result. Default: ``None``. - keepdims (Optional[bool]): - if ``True``, the reduced axes (dimensions) are included in the - result as singleton dimensions, so that the returned array remains - compatible with the input arrays according to Array Broadcasting - rules. Otherwise, if ``False``, the reduced axes are not included - in the returned array. Default: ``False``. - out (Optional[usm_ndarray]): - the array into which the result is written. - The data type of ``out`` must match the expected shape and the - expected data type of the result or (if provided) ``dtype``. - If ``None`` then a new array is returned. Default: ``None``. - - Returns: - usm_ndarray: - an array containing the results. If the result was computed over - the entire array, a zero-dimensional array is returned. The - returned array has the data type as described in the ``dtype`` - parameter description above. - """ - return _reduction_over_axis( - x, - axis, - dtype, - keepdims, - out, - tri._hypot_over_axis, - lambda inp_dt, res_dt, *_: tri._hypot_over_axis_dtype_supported( - inp_dt, res_dt - ), - _default_accumulation_dtype_fp_types, - )
- - -def _comparison_over_axis(x, axis, keepdims, out, _reduction_fn): - if not isinstance(x, dpt.usm_ndarray): - raise TypeError(f"Expected dpctl.tensor.usm_ndarray, got {type(x)}") - - nd = x.ndim - if axis is None: - axis = tuple(range(nd)) - perm = list(axis) - x_tmp = x - else: - if not isinstance(axis, (tuple, list)): - axis = (axis,) - axis = normalize_axis_tuple(axis, nd, "axis") - perm = [i for i in range(nd) if i not in axis] + list(axis) - x_tmp = dpt.permute_dims(x, perm) - red_nd = len(axis) - if any([x_tmp.shape[i] == 0 for i in range(-red_nd, 0)]): - raise ValueError("reduction cannot be performed over zero-size axes") - res_shape = x_tmp.shape[: nd - red_nd] - exec_q = x.sycl_queue - res_dt = x.dtype - res_usm_type = x.usm_type - - orig_out = out - if out is not None: - if not isinstance(out, dpt.usm_ndarray): - raise TypeError( - f"output array must be of usm_ndarray type, got {type(out)}" - ) - if not out.flags.writable: - raise ValueError("provided `out` array is read-only") - if not keepdims: - final_res_shape = res_shape - else: - inp_shape = x.shape - final_res_shape = tuple( - inp_shape[i] if i not in axis else 1 for i in range(nd) - ) - if not out.shape == final_res_shape: - raise ValueError( - "The shape of input and output arrays are inconsistent. " - f"Expected output shape is {final_res_shape}, got {out.shape}" - ) - if res_dt != out.dtype: - raise ValueError( - f"Output array of type {res_dt} is needed, got {out.dtype}" - ) - if dpctl.utils.get_execution_queue((exec_q, out.sycl_queue)) is None: - raise ExecutionPlacementError( - "Input and output allocation queues are not compatible" - ) - if keepdims: - out = dpt.squeeze(out, axis=axis) - orig_out = out - if ti._array_overlap(x, out): - out = dpt.empty_like(out) - else: - out = dpt.empty( - res_shape, dtype=res_dt, usm_type=res_usm_type, sycl_queue=exec_q - ) - - _manager = SequentialOrderManager[exec_q] - dep_evs = _manager.submitted_events - if red_nd == 0: - ht_e_cpy, cpy_e = ti._copy_usm_ndarray_into_usm_ndarray( - src=x_tmp, dst=out, sycl_queue=exec_q, depends=dep_evs - ) - _manager.add_event_pair(ht_e_cpy, cpy_e) - if not (orig_out is None or orig_out is out): - ht_e_cpy2, cpy2_e = ti._copy_usm_ndarray_into_usm_ndarray( - src=out, dst=orig_out, sycl_queue=exec_q, depends=[cpy_e] - ) - _manager.add_event_pair(ht_e_cpy2, cpy2_e) - out = orig_out - return out - - hev, red_ev = _reduction_fn( - src=x_tmp, - trailing_dims_to_reduce=red_nd, - dst=out, - sycl_queue=exec_q, - depends=dep_evs, - ) - _manager.add_event_pair(hev, red_ev) - if not (orig_out is None or orig_out is out): - ht_e_cpy2, cpy2_e = ti._copy_usm_ndarray_into_usm_ndarray( - src=out, dst=orig_out, sycl_queue=exec_q, depends=[red_ev] - ) - _manager.add_event_pair(ht_e_cpy2, cpy2_e) - out = orig_out - - if keepdims: - res_shape = res_shape + (1,) * red_nd - inv_perm = sorted(range(nd), key=lambda d: perm[d]) - out = dpt.permute_dims(dpt.reshape(out, res_shape), inv_perm) - return out - - -
[docs]def max(x, /, *, axis=None, keepdims=False, out=None): - """ - Calculates the maximum value of the input array ``x``. - - Args: - x (usm_ndarray): - input array. - axis (Optional[int, Tuple[int, ...]]): - axis or axes along which maxima must be computed. If a tuple - of unique integers, the maxima are computed over multiple axes. - If ``None``, the max is computed over the entire array. - Default: ``None``. - keepdims (Optional[bool]): - if ``True``, the reduced axes (dimensions) are included in the - result as singleton dimensions, so that the returned array remains - compatible with the input arrays according to Array Broadcasting - rules. Otherwise, if ``False``, the reduced axes are not included - in the returned array. Default: ``False``. - out (Optional[usm_ndarray]): - the array into which the result is written. - The data type of ``out`` must match the expected shape and the - expected data type of the result. - If ``None`` then a new array is returned. Default: ``None``. - - Returns: - usm_ndarray: - an array containing the maxima. If the max was computed over the - entire array, a zero-dimensional array is returned. The returned - array has the same data type as ``x``. - """ - return _comparison_over_axis(x, axis, keepdims, out, tri._max_over_axis)
- - -
[docs]def min(x, /, *, axis=None, keepdims=False, out=None): - """ - Calculates the minimum value of the input array ``x``. - - Args: - x (usm_ndarray): - input array. - axis (Optional[int, Tuple[int, ...]]): - axis or axes along which minima must be computed. If a tuple - of unique integers, the minima are computed over multiple axes. - If ``None``, the min is computed over the entire array. - Default: ``None``. - keepdims (Optional[bool]): - if ``True``, the reduced axes (dimensions) are included in the - result as singleton dimensions, so that the returned array remains - compatible with the input arrays according to Array Broadcasting - rules. Otherwise, if ``False``, the reduced axes are not included - in the returned array. Default: ``False``. - out (Optional[usm_ndarray]): - the array into which the result is written. - The data type of ``out`` must match the expected shape and the - expected data type of the result. - If ``None`` then a new array is returned. Default: ``None``. - - Returns: - usm_ndarray: - an array containing the minima. If the min was computed over the - entire array, a zero-dimensional array is returned. The returned - array has the same data type as ``x``. - """ - return _comparison_over_axis(x, axis, keepdims, out, tri._min_over_axis)
- - -def _search_over_axis(x, axis, keepdims, out, _reduction_fn): - if not isinstance(x, dpt.usm_ndarray): - raise TypeError(f"Expected dpctl.tensor.usm_ndarray, got {type(x)}") - - nd = x.ndim - if axis is None: - axis = tuple(range(nd)) - perm = list(axis) - x_tmp = x - else: - if isinstance(axis, int): - axis = (axis,) - else: - raise TypeError( - f"'axis' argument expected to have type 'int' " - r"or be `None`, " - f"got type {type(axis)}" - ) - axis = normalize_axis_tuple(axis, nd, "axis") - perm = [i for i in range(nd) if i not in axis] + list(axis) - x_tmp = dpt.permute_dims(x, perm) - axis = normalize_axis_tuple(axis, nd, "axis") - red_nd = len(axis) - if any([x_tmp.shape[i] == 0 for i in range(-red_nd, 0)]): - raise ValueError("reduction cannot be performed over zero-size axes") - res_shape = x_tmp.shape[: nd - red_nd] - exec_q = x.sycl_queue - res_dt = ti.default_device_index_type(exec_q.sycl_device) - res_usm_type = x.usm_type - - orig_out = out - if out is not None: - if not isinstance(out, dpt.usm_ndarray): - raise TypeError( - f"output array must be of usm_ndarray type, got {type(out)}" - ) - if not out.flags.writable: - raise ValueError("provided `out` array is read-only") - if not keepdims: - final_res_shape = res_shape - else: - inp_shape = x.shape - final_res_shape = tuple( - inp_shape[i] if i not in axis else 1 for i in range(nd) - ) - if not out.shape == final_res_shape: - raise ValueError( - "The shape of input and output arrays are inconsistent. " - f"Expected output shape is {final_res_shape}, got {out.shape}" - ) - if res_dt != out.dtype: - raise ValueError( - f"Output array of type {res_dt} is needed, got {out.dtype}" - ) - if dpctl.utils.get_execution_queue((exec_q, out.sycl_queue)) is None: - raise ExecutionPlacementError( - "Input and output allocation queues are not compatible" - ) - if keepdims: - out = dpt.squeeze(out, axis=axis) - orig_out = out - if ti._array_overlap(x, out) and red_nd > 0: - out = dpt.empty_like(out) - else: - out = dpt.empty( - res_shape, dtype=res_dt, usm_type=res_usm_type, sycl_queue=exec_q - ) - - _manager = SequentialOrderManager[exec_q] - dep_evs = _manager.submitted_events - if red_nd == 0: - ht_e_fill, fill_ev = ti._full_usm_ndarray( - fill_value=0, dst=out, sycl_queue=exec_q, depends=dep_evs - ) - _manager.add_event_pair(ht_e_fill, fill_ev) - return out - - hev, red_ev = _reduction_fn( - src=x_tmp, - trailing_dims_to_reduce=red_nd, - dst=out, - sycl_queue=exec_q, - depends=dep_evs, - ) - _manager.add_event_pair(hev, red_ev) - if not (orig_out is None or orig_out is out): - ht_e_cpy2, cpy2_e = ti._copy_usm_ndarray_into_usm_ndarray( - src=out, dst=orig_out, sycl_queue=exec_q, depends=[red_ev] - ) - _manager.add_event_pair(ht_e_cpy2, cpy2_e) - out = orig_out - - if keepdims: - res_shape = res_shape + (1,) * red_nd - inv_perm = sorted(range(nd), key=lambda d: perm[d]) - out = dpt.permute_dims(dpt.reshape(out, res_shape), inv_perm) - return out - - -
[docs]def argmax(x, /, *, axis=None, keepdims=False, out=None): - """ - Returns the indices of the maximum values of the input array ``x`` along a - specified axis. - - When the maximum value occurs multiple times, the indices corresponding to - the first occurrence are returned. - - Args: - x (usm_ndarray): - input array. - axis (Optional[int]): - axis along which to search. If ``None``, returns the index of the - maximum value of the flattened array. - Default: ``None``. - keepdims (Optional[bool]): - if ``True``, the reduced axes (dimensions) are included in the - result as singleton dimensions, so that the returned array remains - compatible with the input arrays according to Array Broadcasting - rules. Otherwise, if ``False``, the reduced axes are not included - in the returned array. Default: ``False``. - out (Optional[usm_ndarray]): - the array into which the result is written. - The data type of ``out`` must match the expected shape and the - expected data type of the result. - If ``None`` then a new array is returned. Default: ``None``. - - Returns: - usm_ndarray: - an array containing the indices of the first occurrence of the - maximum values. If the entire array was searched, a - zero-dimensional array is returned. The returned array has the - default array index data type for the device of ``x``. - """ - return _search_over_axis(x, axis, keepdims, out, tri._argmax_over_axis)
- - -
[docs]def argmin(x, /, *, axis=None, keepdims=False, out=None): - """ - Returns the indices of the minimum values of the input array ``x`` along a - specified axis. - - When the minimum value occurs multiple times, the indices corresponding to - the first occurrence are returned. - - Args: - x (usm_ndarray): - input array. - axis (Optional[int]): - axis along which to search. If ``None``, returns the index of the - minimum value of the flattened array. - Default: ``None``. - keepdims (Optional[bool]): - if ``True``, the reduced axes (dimensions) are included in the - result as singleton dimensions, so that the returned array remains - compatible with the input arrays according to Array Broadcasting - rules. Otherwise, if ``False``, the reduced axes are not included - in the returned array. Default: ``False``. - out (Optional[usm_ndarray]): - the array into which the result is written. - The data type of ``out`` must match the expected shape and the - expected data type of the result. - If ``None`` then a new array is returned. Default: ``None``. - - Returns: - usm_ndarray: - an array containing the indices of the first occurrence of the - minimum values. If the entire array was searched, a - zero-dimensional array is returned. The returned array has the - default array index data type for the device of ``x``. - """ - return _search_over_axis(x, axis, keepdims, out, tri._argmin_over_axis)
- - -
[docs]def count_nonzero(x, /, *, axis=None, keepdims=False, out=None): - """ - Counts the number of elements in the input array ``x`` which are non-zero. - - Args: - x (usm_ndarray): - input array. - axis (Optional[int, Tuple[int, ...]]): - axis or axes along which to count. If a tuple of unique integers, - the number of non-zero values are computed over multiple axes. - If ``None``, the number of non-zero values is computed over the - entire array. - Default: ``None``. - keepdims (Optional[bool]): - if ``True``, the reduced axes (dimensions) are included in the - result as singleton dimensions, so that the returned array remains - compatible with the input arrays according to Array Broadcasting - rules. Otherwise, if ``False``, the reduced axes are not included - in the returned array. Default: ``False``. - out (Optional[usm_ndarray]): - the array into which the result is written. - The data type of ``out`` must match the expected shape and data - type. - If ``None`` then a new array is returned. Default: ``None``. - - Returns: - usm_ndarray: - an array containing the count of non-zero values. If the sum was - computed over the entire array, a zero-dimensional array is - returned. The returned array will have the default array index data - type. - """ - if x.dtype != dpt.bool: - x = dpt.astype(x, dpt.bool, copy=False) - return sum( - x, - axis=axis, - dtype=ti.default_device_index_type(x.sycl_device), - keepdims=keepdims, - out=out, - )
-
-
-
-
- - -
-
- - Made with Sphinx and @pradyunsg's - - Furo - -
-
- -
-
- -
-
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/pulls/1961/_modules/dpctl/tensor/_reshape.html b/pulls/1961/_modules/dpctl/tensor/_reshape.html deleted file mode 100644 index 8e73dd0bf9..0000000000 --- a/pulls/1961/_modules/dpctl/tensor/_reshape.html +++ /dev/null @@ -1,1013 +0,0 @@ - - - - - - - - - - - - dpctl.tensor._reshape - Data Parallel Control (dpctl) 0.19.0dev0 documentation - - - - - - - - - - - - - - - - - - - Contents - - - - - - Menu - - - - - - - - Expand - - - - - - Light mode - - - - - - - - - - - - - - Dark mode - - - - - - - Auto light/dark, in light mode - - - - - - - - - - - - - - - Auto light/dark, in dark mode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Skip to content - - - -
-
-
- -
- -
-
- -
- -
-
- -
-
-
- - - - - Back to top - -
-
- -
- -
-
-

Source code for dpctl.tensor._reshape

-#                       Data Parallel Control (dpctl)
-#
-#  Copyright 2020-2025 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.
-import operator
-
-import numpy as np
-
-import dpctl.tensor as dpt
-import dpctl.utils
-from dpctl.tensor._tensor_impl import (
-    _copy_usm_ndarray_for_reshape,
-    _ravel_multi_index,
-    _unravel_index,
-)
-
-__doc__ = "Implementation module for :func:`dpctl.tensor.reshape`."
-
-
-def _make_unit_indexes(shape):
-    """
-    Construct a diagonal matrix with with one on the diagonal
-    except if the corresponding element of shape is 1.
-    """
-    nd = len(shape)
-    mi = np.zeros((nd, nd), dtype="u4")
-    for i, dim in enumerate(shape):
-        mi[i, i] = 1 if dim > 1 else 0
-    return mi
-
-
-def ti_unravel_index(flat_index, shape, order="C"):
-    return _unravel_index(flat_index, shape, order)
-
-
-def ti_ravel_multi_index(multi_index, shape, order="C"):
-    return _ravel_multi_index(multi_index, shape, order)
-
-
-def reshaped_strides(old_sh, old_sts, new_sh, order="C"):
-    """
-    When reshaping array with `old_sh` shape and `old_sts` strides
-    into the new shape `new_sh`, returns the new stride if the reshape
-    can be a view, otherwise returns `None`.
-    """
-    eye_new_mi = _make_unit_indexes(new_sh)
-    new_sts = [
-        sum(
-            st_i * ind_i
-            for st_i, ind_i in zip(
-                old_sts, ti_unravel_index(flat_index, old_sh, order=order)
-            )
-        )
-        for flat_index in [
-            ti_ravel_multi_index(unitvec, new_sh, order=order)
-            for unitvec in eye_new_mi
-        ]
-    ]
-    eye_old_mi = _make_unit_indexes(old_sh)
-    check_sts = [
-        sum(
-            st_i * ind_i
-            for st_i, ind_i in zip(
-                new_sts, ti_unravel_index(flat_index, new_sh, order=order)
-            )
-        )
-        for flat_index in [
-            ti_ravel_multi_index(unitvec, old_sh, order=order)
-            for unitvec in eye_old_mi
-        ]
-    ]
-    valid = all(
-        check_st == old_st or old_dim == 1
-        for check_st, old_st, old_dim in zip(check_sts, old_sts, old_sh)
-    )
-    return new_sts if valid else None
-
-
-
[docs]def reshape(X, /, shape, *, order="C", copy=None): - """reshape(x, shape, order="C") - - Reshapes array ``x`` into new shape. - - Args: - x (usm_ndarray): - input array - shape (Tuple[int]): - the desired shape of the resulting array. - order ("C", "F", optional): - memory layout of the resulting array - if a copy is found to be necessary. Supported - choices are ``"C"`` for C-contiguous, or row-major layout; - and ``"F"`` for F-contiguous, or column-major layout. - - Returns: - usm_ndarray: - Reshaped array is a view, if possible, - and a copy otherwise with memory layout as indicated - by ``order`` keyword. - """ - if not isinstance(X, dpt.usm_ndarray): - raise TypeError - if not isinstance(shape, (list, tuple)): - shape = (shape,) - if order in "cfCF": - order = order.upper() - else: - raise ValueError( - f"Keyword 'order' not recognized. Expecting 'C' or 'F', got {order}" - ) - if copy not in (True, False, None): - raise ValueError( - f"Keyword 'copy' not recognized. Expecting True, False, " - f"or None, got {copy}" - ) - shape = [operator.index(d) for d in shape] - negative_ones_count = 0 - for nshi in shape: - if nshi == -1: - negative_ones_count = negative_ones_count + 1 - if (nshi < -1) or negative_ones_count > 1: - raise ValueError( - "Target shape should have at most 1 negative " - "value which can only be -1" - ) - if negative_ones_count: - sz = -np.prod(shape) - if sz == 0: - raise ValueError( - f"Can not reshape array of size {X.size} into " - f"shape {tuple(i for i in shape if i >= 0)}" - ) - v = X.size // sz - shape = [v if d == -1 else d for d in shape] - if X.size != np.prod(shape): - raise ValueError(f"Can not reshape into {shape}") - if X.size: - newsts = reshaped_strides(X.shape, X.strides, shape, order=order) - else: - newsts = (1,) * len(shape) - copy_required = newsts is None - if copy_required and (copy is False): - raise ValueError( - "Reshaping the array requires a copy, but no copying was " - "requested by using copy=False" - ) - copy_q = X.sycl_queue - if copy_required or (copy is True): - # must perform a copy - copy_q = X.sycl_queue - flat_res = dpt.usm_ndarray( - (X.size,), - dtype=X.dtype, - buffer=X.usm_type, - buffer_ctor_kwargs={"queue": copy_q}, - ) - _manager = dpctl.utils.SequentialOrderManager[copy_q] - dep_evs = _manager.submitted_events - if order == "C": - hev, r_e = _copy_usm_ndarray_for_reshape( - src=X, dst=flat_res, sycl_queue=copy_q, depends=dep_evs - ) - else: - X_t = dpt.permute_dims(X, range(X.ndim - 1, -1, -1)) - hev, r_e = _copy_usm_ndarray_for_reshape( - src=X_t, dst=flat_res, sycl_queue=copy_q, depends=dep_evs - ) - _manager.add_event_pair(hev, r_e) - return dpt.usm_ndarray( - tuple(shape), dtype=X.dtype, buffer=flat_res, order=order - ) - # can form a view - if (len(shape) == X.ndim) and all( - s1 == s2 for s1, s2 in zip(shape, X.shape) - ): - return X - return dpt.usm_ndarray( - shape, - dtype=X.dtype, - buffer=X, - strides=tuple(newsts), - offset=X._element_offset, - )
-
-
-
-
- - -
-
- - Made with Sphinx and @pradyunsg's - - Furo - -
-
- -
-
- -
-
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/pulls/1961/_modules/dpctl/tensor/_search_functions.html b/pulls/1961/_modules/dpctl/tensor/_search_functions.html deleted file mode 100644 index b90efd95a3..0000000000 --- a/pulls/1961/_modules/dpctl/tensor/_search_functions.html +++ /dev/null @@ -1,1222 +0,0 @@ - - - - - - - - - - - - dpctl.tensor._search_functions - Data Parallel Control (dpctl) 0.19.0dev0 documentation - - - - - - - - - - - - - - - - - - - Contents - - - - - - Menu - - - - - - - - Expand - - - - - - Light mode - - - - - - - - - - - - - - Dark mode - - - - - - - Auto light/dark, in light mode - - - - - - - - - - - - - - - Auto light/dark, in dark mode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Skip to content - - - -
-
-
- -
- -
-
- -
- -
-
- -
-
-
- - - - - Back to top - -
-
- -
- -
-
-

Source code for dpctl.tensor._search_functions

-#                       Data Parallel Control (dpctl)
-#
-#  Copyright 2020-2025 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.
-
-import dpctl
-import dpctl.tensor as dpt
-import dpctl.tensor._tensor_impl as ti
-from dpctl.tensor._elementwise_common import (
-    _get_dtype,
-    _get_queue_usm_type,
-    _get_shape,
-    _validate_dtype,
-)
-from dpctl.tensor._manipulation_functions import _broadcast_shape_impl
-from dpctl.utils import ExecutionPlacementError, SequentialOrderManager
-
-from ._copy_utils import _empty_like_orderK, _empty_like_triple_orderK
-from ._type_utils import (
-    WeakBooleanType,
-    WeakComplexType,
-    WeakFloatingType,
-    WeakIntegralType,
-    _all_data_types,
-    _can_cast,
-    _is_weak_dtype,
-    _strong_dtype_num_kind,
-    _to_device_supported_dtype,
-    _weak_type_num_kind,
-)
-
-
-def _default_dtype_from_weak_type(dt, dev):
-    if isinstance(dt, WeakBooleanType):
-        return dpt.bool
-    if isinstance(dt, WeakIntegralType):
-        return dpt.dtype(ti.default_device_int_type(dev))
-    if isinstance(dt, WeakFloatingType):
-        return dpt.dtype(ti.default_device_fp_type(dev))
-    if isinstance(dt, WeakComplexType):
-        return dpt.dtype(ti.default_device_complex_type(dev))
-
-
-def _resolve_two_weak_types(o1_dtype, o2_dtype, dev):
-    "Resolves two weak data types per NEP-0050"
-    if _is_weak_dtype(o1_dtype):
-        if _is_weak_dtype(o2_dtype):
-            return _default_dtype_from_weak_type(
-                o1_dtype, dev
-            ), _default_dtype_from_weak_type(o2_dtype, dev)
-        o1_kind_num = _weak_type_num_kind(o1_dtype)
-        o2_kind_num = _strong_dtype_num_kind(o2_dtype)
-        if o1_kind_num > o2_kind_num:
-            if isinstance(o1_dtype, WeakIntegralType):
-                return dpt.dtype(ti.default_device_int_type(dev)), o2_dtype
-            if isinstance(o1_dtype, WeakComplexType):
-                if o2_dtype is dpt.float16 or o2_dtype is dpt.float32:
-                    return dpt.complex64, o2_dtype
-                return (
-                    _to_device_supported_dtype(dpt.complex128, dev),
-                    o2_dtype,
-                )
-            return _to_device_supported_dtype(dpt.float64, dev), o2_dtype
-        else:
-            return o2_dtype, o2_dtype
-    elif _is_weak_dtype(o2_dtype):
-        o1_kind_num = _strong_dtype_num_kind(o1_dtype)
-        o2_kind_num = _weak_type_num_kind(o2_dtype)
-        if o2_kind_num > o1_kind_num:
-            if isinstance(o2_dtype, WeakIntegralType):
-                return o1_dtype, dpt.dtype(ti.default_device_int_type(dev))
-            if isinstance(o2_dtype, WeakComplexType):
-                if o1_dtype is dpt.float16 or o1_dtype is dpt.float32:
-                    return o1_dtype, dpt.complex64
-                return o1_dtype, _to_device_supported_dtype(dpt.complex128, dev)
-            return (
-                o1_dtype,
-                _to_device_supported_dtype(dpt.float64, dev),
-            )
-        else:
-            return o1_dtype, o1_dtype
-    else:
-        return o1_dtype, o2_dtype
-
-
-def _where_result_type(dt1, dt2, dev):
-    res_dtype = dpt.result_type(dt1, dt2)
-    fp16 = dev.has_aspect_fp16
-    fp64 = dev.has_aspect_fp64
-
-    all_dts = _all_data_types(fp16, fp64)
-    if res_dtype in all_dts:
-        return res_dtype
-    else:
-        for res_dtype_ in all_dts:
-            if _can_cast(dt1, res_dtype_, fp16, fp64) and _can_cast(
-                dt2, res_dtype_, fp16, fp64
-            ):
-                return res_dtype_
-        return None
-
-
-
[docs]def where(condition, x1, x2, /, *, order="K", out=None): - """ - Returns :class:`dpctl.tensor.usm_ndarray` with elements chosen - from ``x1`` or ``x2`` depending on ``condition``. - - Args: - condition (usm_ndarray): When ``True`` yields from ``x1``, - and otherwise yields from ``x2``. - Must be compatible with ``x1`` and ``x2`` according - to broadcasting rules. - x1 (Union[usm_ndarray, bool, int, float, complex]): - Array from which values are chosen when ``condition`` is ``True``. - Must be compatible with ``condition`` and ``x2`` according - to broadcasting rules. - x2 (Union[usm_ndarray, bool, int, float, complex]): - Array from which values are chosen when ``condition`` is not - ``True``. - Must be compatible with ``condition`` and ``x2`` according - to broadcasting rules. - order (``"K"``, ``"C"``, ``"F"``, ``"A"``, optional): - Memory layout of the new output array, - if parameter ``out`` is ``None``. - Default: ``"K"``. - out (Optional[usm_ndarray]): - the array into which the result is written. - The data type of `out` must match the expected shape and the - expected data type of the result. - If ``None`` then a new array is returned. Default: ``None``. - - Returns: - usm_ndarray: - An array with elements from ``x1`` where ``condition`` is ``True``, - and elements from ``x2`` elsewhere. - - The data type of the returned array is determined by applying - the Type Promotion Rules to ``x1`` and ``x2``. - """ - if not isinstance(condition, dpt.usm_ndarray): - raise TypeError( - "Expecting dpctl.tensor.usm_ndarray type, " f"got {type(condition)}" - ) - if order not in ["K", "C", "F", "A"]: - order = "K" - q1, condition_usm_type = condition.sycl_queue, condition.usm_type - q2, x1_usm_type = _get_queue_usm_type(x1) - q3, x2_usm_type = _get_queue_usm_type(x2) - if q2 is None and q3 is None: - exec_q = q1 - out_usm_type = condition_usm_type - elif q3 is None: - exec_q = dpctl.utils.get_execution_queue((q1, q2)) - if exec_q is None: - raise ExecutionPlacementError( - "Execution placement can not be unambiguously inferred " - "from input arguments." - ) - out_usm_type = dpctl.utils.get_coerced_usm_type( - ( - condition_usm_type, - x1_usm_type, - ) - ) - elif q2 is None: - exec_q = dpctl.utils.get_execution_queue((q1, q3)) - if exec_q is None: - raise ExecutionPlacementError( - "Execution placement can not be unambiguously inferred " - "from input arguments." - ) - out_usm_type = dpctl.utils.get_coerced_usm_type( - ( - condition_usm_type, - x2_usm_type, - ) - ) - else: - exec_q = dpctl.utils.get_execution_queue((q1, q2, q3)) - if exec_q is None: - raise ExecutionPlacementError( - "Execution placement can not be unambiguously inferred " - "from input arguments." - ) - out_usm_type = dpctl.utils.get_coerced_usm_type( - ( - condition_usm_type, - x1_usm_type, - x2_usm_type, - ) - ) - dpctl.utils.validate_usm_type(out_usm_type, allow_none=False) - condition_shape = condition.shape - x1_shape = _get_shape(x1) - x2_shape = _get_shape(x2) - if not all( - isinstance(s, (tuple, list)) - for s in ( - x1_shape, - x2_shape, - ) - ): - raise TypeError( - "Shape of arguments can not be inferred. " - "Arguments are expected to be " - "lists, tuples, or both" - ) - try: - res_shape = _broadcast_shape_impl( - [ - condition_shape, - x1_shape, - x2_shape, - ] - ) - except ValueError: - raise ValueError( - "operands could not be broadcast together with shapes " - f"{condition_shape}, {x1_shape}, and {x2_shape}" - ) - sycl_dev = exec_q.sycl_device - x1_dtype = _get_dtype(x1, sycl_dev) - x2_dtype = _get_dtype(x2, sycl_dev) - if not all(_validate_dtype(o) for o in (x1_dtype, x2_dtype)): - raise ValueError("Operands have unsupported data types") - x1_dtype, x2_dtype = _resolve_two_weak_types(x1_dtype, x2_dtype, sycl_dev) - out_dtype = _where_result_type(x1_dtype, x2_dtype, sycl_dev) - if out_dtype is None: - raise TypeError( - "function 'where' does not support input " - f"types ({x1_dtype}, {x2_dtype}), " - "and the inputs could not be safely coerced " - "to any supported types according to the casting rule ''safe''." - ) - - orig_out = out - if out is not None: - if not isinstance(out, dpt.usm_ndarray): - raise TypeError( - "output array must be of usm_ndarray type, got " f"{type(out)}" - ) - - if not out.flags.writable: - raise ValueError("provided `out` array is read-only") - - if out.shape != res_shape: - raise ValueError( - "The shape of input and output arrays are " - f"inconsistent. Expected output shape is {res_shape}, " - f"got {out.shape}" - ) - - if out_dtype != out.dtype: - raise ValueError( - f"Output array of type {out_dtype} is needed, " - f"got {out.dtype}" - ) - - if dpctl.utils.get_execution_queue((exec_q, out.sycl_queue)) is None: - raise ExecutionPlacementError( - "Input and output allocation queues are not compatible" - ) - - if ti._array_overlap(condition, out) and not ti._same_logical_tensors( - condition, out - ): - out = dpt.empty_like(out) - - if isinstance(x1, dpt.usm_ndarray): - if ( - ti._array_overlap(x1, out) - and not ti._same_logical_tensors(x1, out) - and x1_dtype == out_dtype - ): - out = dpt.empty_like(out) - - if isinstance(x2, dpt.usm_ndarray): - if ( - ti._array_overlap(x2, out) - and not ti._same_logical_tensors(x2, out) - and x2_dtype == out_dtype - ): - out = dpt.empty_like(out) - - if order == "A": - order = ( - "F" - if all( - arr.flags.f_contiguous - for arr in ( - condition, - x1, - x2, - ) - ) - else "C" - ) - if not isinstance(x1, dpt.usm_ndarray): - x1 = dpt.asarray(x1, dtype=x1_dtype, sycl_queue=exec_q) - if not isinstance(x2, dpt.usm_ndarray): - x2 = dpt.asarray(x2, dtype=x2_dtype, sycl_queue=exec_q) - - if condition.size == 0: - if out is not None: - return out - else: - if order == "K": - return _empty_like_triple_orderK( - condition, - x1, - x2, - out_dtype, - res_shape, - out_usm_type, - exec_q, - ) - else: - return dpt.empty( - res_shape, - dtype=out_dtype, - order=order, - usm_type=out_usm_type, - sycl_queue=exec_q, - ) - - _manager = SequentialOrderManager[exec_q] - dep_evs = _manager.submitted_events - if x1_dtype != out_dtype: - if order == "K": - _x1 = _empty_like_orderK(x1, out_dtype) - else: - _x1 = dpt.empty_like(x1, dtype=out_dtype, order=order) - ht_copy1_ev, copy1_ev = ti._copy_usm_ndarray_into_usm_ndarray( - src=x1, dst=_x1, sycl_queue=exec_q, depends=dep_evs - ) - x1 = _x1 - _manager.add_event_pair(ht_copy1_ev, copy1_ev) - - if x2_dtype != out_dtype: - if order == "K": - _x2 = _empty_like_orderK(x2, out_dtype) - else: - _x2 = dpt.empty_like(x2, dtype=out_dtype, order=order) - ht_copy2_ev, copy2_ev = ti._copy_usm_ndarray_into_usm_ndarray( - src=x2, dst=_x2, sycl_queue=exec_q, depends=dep_evs - ) - x2 = _x2 - _manager.add_event_pair(ht_copy2_ev, copy2_ev) - - if out is None: - if order == "K": - out = _empty_like_triple_orderK( - condition, x1, x2, out_dtype, res_shape, out_usm_type, exec_q - ) - else: - out = dpt.empty( - res_shape, - dtype=out_dtype, - order=order, - usm_type=out_usm_type, - sycl_queue=exec_q, - ) - - if condition_shape != res_shape: - condition = dpt.broadcast_to(condition, res_shape) - if x1_shape != res_shape: - x1 = dpt.broadcast_to(x1, res_shape) - if x2_shape != res_shape: - x2 = dpt.broadcast_to(x2, res_shape) - - dep_evs = _manager.submitted_events - hev, where_ev = ti._where( - condition=condition, - x1=x1, - x2=x2, - dst=out, - sycl_queue=exec_q, - depends=dep_evs, - ) - _manager.add_event_pair(hev, where_ev) - if not (orig_out is None or orig_out is out): - # Copy the out data from temporary buffer to original memory - ht_copy_out_ev, cpy_ev = ti._copy_usm_ndarray_into_usm_ndarray( - src=out, - dst=orig_out, - sycl_queue=exec_q, - depends=[where_ev], - ) - _manager.add_event_pair(ht_copy_out_ev, cpy_ev) - out = orig_out - - return out
-
-
-
-
- - -
-
- - Made with Sphinx and @pradyunsg's - - Furo - -
-
- -
-
- -
-
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/pulls/1961/_modules/dpctl/tensor/_searchsorted.html b/pulls/1961/_modules/dpctl/tensor/_searchsorted.html deleted file mode 100644 index 4c6a732d2b..0000000000 --- a/pulls/1961/_modules/dpctl/tensor/_searchsorted.html +++ /dev/null @@ -1,976 +0,0 @@ - - - - - - - - - - - - dpctl.tensor._searchsorted - Data Parallel Control (dpctl) 0.19.0dev0 documentation - - - - - - - - - - - - - - - - - - - Contents - - - - - - Menu - - - - - - - - Expand - - - - - - Light mode - - - - - - - - - - - - - - Dark mode - - - - - - - Auto light/dark, in light mode - - - - - - - - - - - - - - - Auto light/dark, in dark mode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Skip to content - - - -
-
-
- -
- -
-
- -
- -
-
- -
-
-
- - - - - Back to top - -
-
- -
- -
-
-

Source code for dpctl.tensor._searchsorted

-from typing import Literal, Union
-
-import dpctl
-import dpctl.utils as du
-
-from ._copy_utils import _empty_like_orderK
-from ._ctors import empty
-from ._tensor_impl import _copy_usm_ndarray_into_usm_ndarray as ti_copy
-from ._tensor_impl import _take as ti_take
-from ._tensor_impl import (
-    default_device_index_type as ti_default_device_index_type,
-)
-from ._tensor_sorting_impl import _searchsorted_left, _searchsorted_right
-from ._type_utils import isdtype, result_type
-from ._usmarray import usm_ndarray
-
-
-
[docs]def searchsorted( - x1: usm_ndarray, - x2: usm_ndarray, - /, - *, - side: Literal["left", "right"] = "left", - sorter: Union[usm_ndarray, None] = None, -) -> usm_ndarray: - """searchsorted(x1, x2, side='left', sorter=None) - - Finds the indices into `x1` such that, if the corresponding elements - in `x2` were inserted before the indices, the order of `x1`, when sorted - in ascending order, would be preserved. - - Args: - x1 (usm_ndarray): - input array. Must be a one-dimensional array. If `sorter` is - `None`, must be sorted in ascending order; otherwise, `sorter` must - be an array of indices that sort `x1` in ascending order. - x2 (usm_ndarray): - array containing search values. - side (Literal["left", "right]): - argument controlling which index is returned if a value lands - exactly on an edge. If `x2` is an array of rank `N` where - `v = x2[n, m, ..., j]`, the element `ret[n, m, ..., j]` in the - return array `ret` contains the position `i` such that - if `side="left"`, it is the first index such that - `x1[i-1] < v <= x1[i]`, `0` if `v <= x1[0]`, and `x1.size` - if `v > x1[-1]`; - and if `side="right"`, it is the first position `i` such that - `x1[i-1] <= v < x1[i]`, `0` if `v < x1[0]`, and `x1.size` - if `v >= x1[-1]`. Default: `"left"`. - sorter (Optional[usm_ndarray]): - array of indices that sort `x1` in ascending order. The array must - have the same shape as `x1` and have an integral data type. - Out of bound index values of `sorter` array are treated using - `"wrap"` mode documented in :py:func:`dpctl.tensor.take`. - Default: `None`. - """ - if not isinstance(x1, usm_ndarray): - raise TypeError(f"Expected dpctl.tensor.usm_ndarray, got {type(x1)}") - if not isinstance(x2, usm_ndarray): - raise TypeError(f"Expected dpctl.tensor.usm_ndarray, got {type(x2)}") - if sorter is not None and not isinstance(sorter, usm_ndarray): - raise TypeError( - f"Expected dpctl.tensor.usm_ndarray, got {type(sorter)}" - ) - - if side not in ["left", "right"]: - raise ValueError( - "Unrecognized value of 'side' keyword argument. " - "Expected either 'left' or 'right'" - ) - - if sorter is None: - q = du.get_execution_queue([x1.sycl_queue, x2.sycl_queue]) - else: - q = du.get_execution_queue( - [x1.sycl_queue, x2.sycl_queue, sorter.sycl_queue] - ) - if q is None: - raise du.ExecutionPlacementError( - "Execution placement can not be unambiguously " - "inferred from input arguments." - ) - - if x1.ndim != 1: - raise ValueError("First argument array must be one-dimensional") - - x1_dt = x1.dtype - x2_dt = x2.dtype - - _manager = du.SequentialOrderManager[q] - dep_evs = _manager.submitted_events - ev = dpctl.SyclEvent() - if sorter is not None: - if not isdtype(sorter.dtype, "integral"): - raise ValueError( - f"Sorter array must have integral data type, got {sorter.dtype}" - ) - if x1.shape != sorter.shape: - raise ValueError( - "Sorter array must be one-dimension with the same " - "shape as the first argument array" - ) - res = empty(x1.shape, dtype=x1_dt, usm_type=x1.usm_type, sycl_queue=q) - ind = (sorter,) - axis = 0 - wrap_out_of_bound_indices_mode = 0 - ht_ev, ev = ti_take( - x1, - ind, - res, - axis, - wrap_out_of_bound_indices_mode, - sycl_queue=q, - depends=dep_evs, - ) - x1 = res - _manager.add_event_pair(ht_ev, ev) - - if x1_dt != x2_dt: - dt = result_type(x1, x2) - if x1_dt != dt: - x1_buf = _empty_like_orderK(x1, dt) - dep_evs = _manager.submitted_events - ht_ev, ev = ti_copy( - src=x1, dst=x1_buf, sycl_queue=q, depends=dep_evs - ) - _manager.add_event_pair(ht_ev, ev) - x1 = x1_buf - if x2_dt != dt: - x2_buf = _empty_like_orderK(x2, dt) - dep_evs = _manager.submitted_events - ht_ev, ev = ti_copy( - src=x2, dst=x2_buf, sycl_queue=q, depends=dep_evs - ) - _manager.add_event_pair(ht_ev, ev) - x2 = x2_buf - - dst_usm_type = du.get_coerced_usm_type([x1.usm_type, x2.usm_type]) - index_dt = ti_default_device_index_type(q) - - dst = _empty_like_orderK(x2, index_dt, usm_type=dst_usm_type) - - dep_evs = _manager.submitted_events - if side == "left": - ht_ev, s_ev = _searchsorted_left( - hay=x1, - needles=x2, - positions=dst, - sycl_queue=q, - depends=dep_evs, - ) - else: - ht_ev, s_ev = _searchsorted_right( - hay=x1, needles=x2, positions=dst, sycl_queue=q, depends=dep_evs - ) - _manager.add_event_pair(ht_ev, s_ev) - return dst
-
-
-
-
- - -
-
- - Made with Sphinx and @pradyunsg's - - Furo - -
-
- -
-
- -
-
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/pulls/1961/_modules/dpctl/tensor/_set_functions.html b/pulls/1961/_modules/dpctl/tensor/_set_functions.html deleted file mode 100644 index 2e3e1d6942..0000000000 --- a/pulls/1961/_modules/dpctl/tensor/_set_functions.html +++ /dev/null @@ -1,1445 +0,0 @@ - - - - - - - - - - - - dpctl.tensor._set_functions - Data Parallel Control (dpctl) 0.19.0dev0 documentation - - - - - - - - - - - - - - - - - - - Contents - - - - - - Menu - - - - - - - - Expand - - - - - - Light mode - - - - - - - - - - - - - - Dark mode - - - - - - - Auto light/dark, in light mode - - - - - - - - - - - - - - - Auto light/dark, in dark mode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Skip to content - - - -
-
-
- -
- -
-
- -
- -
-
- -
-
-
- - - - - Back to top - -
-
- -
- -
-
-

Source code for dpctl.tensor._set_functions

-#                       Data Parallel Control (dpctl)
-#
-#  Copyright 2020-2025 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.
-
-from typing import NamedTuple
-
-import dpctl.tensor as dpt
-import dpctl.utils as du
-
-from ._tensor_elementwise_impl import _not_equal, _subtract
-from ._tensor_impl import (
-    _copy_usm_ndarray_into_usm_ndarray,
-    _extract,
-    _full_usm_ndarray,
-    _linspace_step,
-    _take,
-    default_device_index_type,
-    mask_positions,
-)
-from ._tensor_sorting_impl import (
-    _argsort_ascending,
-    _searchsorted_left,
-    _sort_ascending,
-)
-
-__all__ = [
-    "unique_values",
-    "unique_counts",
-    "unique_inverse",
-    "unique_all",
-    "UniqueAllResult",
-    "UniqueCountsResult",
-    "UniqueInverseResult",
-]
-
-
-class UniqueAllResult(NamedTuple):
-    values: dpt.usm_ndarray
-    indices: dpt.usm_ndarray
-    inverse_indices: dpt.usm_ndarray
-    counts: dpt.usm_ndarray
-
-
-class UniqueCountsResult(NamedTuple):
-    values: dpt.usm_ndarray
-    counts: dpt.usm_ndarray
-
-
-class UniqueInverseResult(NamedTuple):
-    values: dpt.usm_ndarray
-    inverse_indices: dpt.usm_ndarray
-
-
-
[docs]def unique_values(x: dpt.usm_ndarray) -> dpt.usm_ndarray: - """unique_values(x) - - Returns the unique elements of an input array `x`. - - Args: - x (usm_ndarray): - input array. Inputs with more than one dimension are flattened. - Returns: - usm_ndarray - an array containing the set of unique elements in `x`. The - returned array has the same data type as `x`. - """ - if not isinstance(x, dpt.usm_ndarray): - raise TypeError(f"Expected dpctl.tensor.usm_ndarray, got {type(x)}") - array_api_dev = x.device - exec_q = array_api_dev.sycl_queue - if x.ndim == 1: - fx = x - else: - fx = dpt.reshape(x, (x.size,), order="C") - if fx.size == 0: - return fx - s = dpt.empty_like(fx, order="C") - _manager = du.SequentialOrderManager[exec_q] - dep_evs = _manager.submitted_events - if fx.flags.c_contiguous: - ht_ev, sort_ev = _sort_ascending( - src=fx, - trailing_dims_to_sort=1, - dst=s, - sycl_queue=exec_q, - depends=dep_evs, - ) - _manager.add_event_pair(ht_ev, sort_ev) - else: - tmp = dpt.empty_like(fx, order="C") - ht_ev, copy_ev = _copy_usm_ndarray_into_usm_ndarray( - src=fx, dst=tmp, sycl_queue=exec_q, depends=dep_evs - ) - _manager.add_event_pair(ht_ev, copy_ev) - ht_ev, sort_ev = _sort_ascending( - src=tmp, - trailing_dims_to_sort=1, - dst=s, - sycl_queue=exec_q, - depends=[copy_ev], - ) - _manager.add_event_pair(ht_ev, sort_ev) - unique_mask = dpt.empty(fx.shape, dtype="?", sycl_queue=exec_q) - ht_ev, uneq_ev = _not_equal( - src1=s[:-1], - src2=s[1:], - dst=unique_mask[1:], - sycl_queue=exec_q, - depends=[sort_ev], - ) - _manager.add_event_pair(ht_ev, uneq_ev) - # writing into new allocation, no dependencies - ht_ev, one_ev = _full_usm_ndarray( - fill_value=True, dst=unique_mask[0], sycl_queue=exec_q - ) - _manager.add_event_pair(ht_ev, one_ev) - cumsum = dpt.empty(s.shape, dtype=dpt.int64, sycl_queue=exec_q) - # synchronizing call - n_uniques = mask_positions( - unique_mask, cumsum, sycl_queue=exec_q, depends=[one_ev, uneq_ev] - ) - if n_uniques == fx.size: - return s - unique_vals = dpt.empty( - n_uniques, dtype=x.dtype, usm_type=x.usm_type, sycl_queue=exec_q - ) - ht_ev, ex_e = _extract( - src=s, - cumsum=cumsum, - axis_start=0, - axis_end=1, - dst=unique_vals, - sycl_queue=exec_q, - ) - _manager.add_event_pair(ht_ev, ex_e) - return unique_vals
- - -
[docs]def unique_counts(x: dpt.usm_ndarray) -> UniqueCountsResult: - """unique_counts(x) - - Returns the unique elements of an input array `x` and the corresponding - counts for each unique element in `x`. - - Args: - x (usm_ndarray): - input array. Inputs with more than one dimension are flattened. - Returns: - tuple[usm_ndarray, usm_ndarray] - a namedtuple `(values, counts)` whose - - * first element is the field name `values` and is an array - containing the unique elements of `x`. This array has the - same data type as `x`. - * second element has the field name `counts` and is an array - containing the number of times each unique element occurs in `x`. - This array has the same shape as `values` and has the default - array index data type. - """ - if not isinstance(x, dpt.usm_ndarray): - raise TypeError(f"Expected dpctl.tensor.usm_ndarray, got {type(x)}") - array_api_dev = x.device - exec_q = array_api_dev.sycl_queue - x_usm_type = x.usm_type - if x.ndim == 1: - fx = x - else: - fx = dpt.reshape(x, (x.size,), order="C") - ind_dt = default_device_index_type(exec_q) - if fx.size == 0: - return UniqueCountsResult(fx, dpt.empty_like(fx, dtype=ind_dt)) - s = dpt.empty_like(fx, order="C") - - _manager = du.SequentialOrderManager[exec_q] - dep_evs = _manager.submitted_events - if fx.flags.c_contiguous: - ht_ev, sort_ev = _sort_ascending( - src=fx, - trailing_dims_to_sort=1, - dst=s, - sycl_queue=exec_q, - depends=dep_evs, - ) - _manager.add_event_pair(ht_ev, sort_ev) - else: - tmp = dpt.empty_like(fx, order="C") - ht_ev, copy_ev = _copy_usm_ndarray_into_usm_ndarray( - src=fx, dst=tmp, sycl_queue=exec_q, depends=dep_evs - ) - _manager.add_event_pair(ht_ev, copy_ev) - ht_ev, sort_ev = _sort_ascending( - src=tmp, - dst=s, - trailing_dims_to_sort=1, - sycl_queue=exec_q, - depends=[copy_ev], - ) - _manager.add_event_pair(ht_ev, sort_ev) - unique_mask = dpt.empty(s.shape, dtype="?", sycl_queue=exec_q) - ht_ev, uneq_ev = _not_equal( - src1=s[:-1], - src2=s[1:], - dst=unique_mask[1:], - sycl_queue=exec_q, - depends=[sort_ev], - ) - _manager.add_event_pair(ht_ev, uneq_ev) - # no dependency, since we write into new allocation - ht_ev, one_ev = _full_usm_ndarray( - fill_value=True, dst=unique_mask[0], sycl_queue=exec_q - ) - _manager.add_event_pair(ht_ev, one_ev) - cumsum = dpt.empty(unique_mask.shape, dtype=dpt.int64, sycl_queue=exec_q) - # synchronizing call - n_uniques = mask_positions( - unique_mask, cumsum, sycl_queue=exec_q, depends=[one_ev, uneq_ev] - ) - if n_uniques == fx.size: - return UniqueCountsResult( - s, - dpt.ones( - n_uniques, dtype=ind_dt, usm_type=x_usm_type, sycl_queue=exec_q - ), - ) - unique_vals = dpt.empty( - n_uniques, dtype=x.dtype, usm_type=x_usm_type, sycl_queue=exec_q - ) - # populate unique values - ht_ev, ex_e = _extract( - src=s, - cumsum=cumsum, - axis_start=0, - axis_end=1, - dst=unique_vals, - sycl_queue=exec_q, - ) - _manager.add_event_pair(ht_ev, ex_e) - unique_counts = dpt.empty( - n_uniques + 1, dtype=ind_dt, usm_type=x_usm_type, sycl_queue=exec_q - ) - idx = dpt.empty(x.size, dtype=ind_dt, sycl_queue=exec_q) - # writing into new allocation, no dependency - ht_ev, id_ev = _linspace_step(start=0, dt=1, dst=idx, sycl_queue=exec_q) - _manager.add_event_pair(ht_ev, id_ev) - ht_ev, extr_ev = _extract( - src=idx, - cumsum=cumsum, - axis_start=0, - axis_end=1, - dst=unique_counts[:-1], - sycl_queue=exec_q, - depends=[id_ev], - ) - _manager.add_event_pair(ht_ev, extr_ev) - # no dependency, writing into disjoint segmenent of new allocation - ht_ev, set_ev = _full_usm_ndarray( - x.size, dst=unique_counts[-1], sycl_queue=exec_q - ) - _manager.add_event_pair(ht_ev, set_ev) - _counts = dpt.empty_like(unique_counts[1:]) - ht_ev, sub_ev = _subtract( - src1=unique_counts[1:], - src2=unique_counts[:-1], - dst=_counts, - sycl_queue=exec_q, - depends=[set_ev, extr_ev], - ) - _manager.add_event_pair(ht_ev, sub_ev) - return UniqueCountsResult(unique_vals, _counts)
- - -
[docs]def unique_inverse(x): - """unique_inverse - - Returns the unique elements of an input array x and the indices from the - set of unique elements that reconstruct `x`. - - Args: - x (usm_ndarray): - input array. Inputs with more than one dimension are flattened. - Returns: - tuple[usm_ndarray, usm_ndarray] - a namedtuple `(values, inverse_indices)` whose - - * first element has the field name `values` and is an array - containing the unique elements of `x`. The array has the same - data type as `x`. - * second element has the field name `inverse_indices` and is an - array containing the indices of values that reconstruct `x`. - The array has the same shape as `x` and has the default array - index data type. - """ - if not isinstance(x, dpt.usm_ndarray): - raise TypeError(f"Expected dpctl.tensor.usm_ndarray, got {type(x)}") - array_api_dev = x.device - exec_q = array_api_dev.sycl_queue - x_usm_type = x.usm_type - ind_dt = default_device_index_type(exec_q) - if x.ndim == 1: - fx = x - else: - fx = dpt.reshape(x, (x.size,), order="C") - sorting_ids = dpt.empty_like(fx, dtype=ind_dt, order="C") - unsorting_ids = dpt.empty_like(sorting_ids, dtype=ind_dt, order="C") - if fx.size == 0: - return UniqueInverseResult(fx, dpt.reshape(unsorting_ids, x.shape)) - - _manager = du.SequentialOrderManager[exec_q] - dep_evs = _manager.submitted_events - if fx.flags.c_contiguous: - ht_ev, sort_ev = _argsort_ascending( - src=fx, - trailing_dims_to_sort=1, - dst=sorting_ids, - sycl_queue=exec_q, - depends=dep_evs, - ) - _manager.add_event_pair(ht_ev, sort_ev) - else: - tmp = dpt.empty_like(fx, order="C") - ht_ev, copy_ev = _copy_usm_ndarray_into_usm_ndarray( - src=fx, dst=tmp, sycl_queue=exec_q, depends=dep_evs - ) - _manager.add_event_pair(ht_ev, copy_ev) - ht_ev, sort_ev = _argsort_ascending( - src=tmp, - trailing_dims_to_sort=1, - dst=sorting_ids, - sycl_queue=exec_q, - depends=[copy_ev], - ) - _manager.add_event_pair(ht_ev, sort_ev) - ht_ev, argsort_ev = _argsort_ascending( - src=sorting_ids, - trailing_dims_to_sort=1, - dst=unsorting_ids, - sycl_queue=exec_q, - depends=[sort_ev], - ) - _manager.add_event_pair(ht_ev, argsort_ev) - s = dpt.empty_like(fx) - # s = fx[sorting_ids] - ht_ev, take_ev = _take( - src=fx, - ind=(sorting_ids,), - dst=s, - axis_start=0, - mode=0, - sycl_queue=exec_q, - depends=[sort_ev], - ) - _manager.add_event_pair(ht_ev, take_ev) - unique_mask = dpt.empty(fx.shape, dtype="?", sycl_queue=exec_q) - ht_ev, uneq_ev = _not_equal( - src1=s[:-1], - src2=s[1:], - dst=unique_mask[1:], - sycl_queue=exec_q, - depends=[take_ev], - ) - _manager.add_event_pair(ht_ev, uneq_ev) - # no dependency - ht_ev, one_ev = _full_usm_ndarray( - fill_value=True, dst=unique_mask[0], sycl_queue=exec_q - ) - _manager.add_event_pair(ht_ev, one_ev) - cumsum = dpt.empty(unique_mask.shape, dtype=dpt.int64, sycl_queue=exec_q) - # synchronizing call - n_uniques = mask_positions( - unique_mask, cumsum, sycl_queue=exec_q, depends=[uneq_ev, one_ev] - ) - if n_uniques == fx.size: - return UniqueInverseResult(s, dpt.reshape(unsorting_ids, x.shape)) - unique_vals = dpt.empty( - n_uniques, dtype=x.dtype, usm_type=x_usm_type, sycl_queue=exec_q - ) - ht_ev, uv_ev = _extract( - src=s, - cumsum=cumsum, - axis_start=0, - axis_end=1, - dst=unique_vals, - sycl_queue=exec_q, - ) - _manager.add_event_pair(ht_ev, uv_ev) - cum_unique_counts = dpt.empty( - n_uniques + 1, dtype=ind_dt, usm_type=x_usm_type, sycl_queue=exec_q - ) - idx = dpt.empty(x.size, dtype=ind_dt, sycl_queue=exec_q) - ht_ev, id_ev = _linspace_step(start=0, dt=1, dst=idx, sycl_queue=exec_q) - _manager.add_event_pair(ht_ev, id_ev) - ht_ev, extr_ev = _extract( - src=idx, - cumsum=cumsum, - axis_start=0, - axis_end=1, - dst=cum_unique_counts[:-1], - sycl_queue=exec_q, - depends=[id_ev], - ) - _manager.add_event_pair(ht_ev, extr_ev) - ht_ev, set_ev = _full_usm_ndarray( - x.size, dst=cum_unique_counts[-1], sycl_queue=exec_q - ) - _manager.add_event_pair(ht_ev, set_ev) - _counts = dpt.empty_like(cum_unique_counts[1:]) - ht_ev, sub_ev = _subtract( - src1=cum_unique_counts[1:], - src2=cum_unique_counts[:-1], - dst=_counts, - sycl_queue=exec_q, - depends=[set_ev, extr_ev], - ) - _manager.add_event_pair(ht_ev, sub_ev) - - inv = dpt.empty_like(x, dtype=ind_dt, order="C") - ht_ev, ssl_ev = _searchsorted_left( - hay=unique_vals, - needles=x, - positions=inv, - sycl_queue=exec_q, - depends=[ - uv_ev, - ], - ) - _manager.add_event_pair(ht_ev, ssl_ev) - - return UniqueInverseResult(unique_vals, inv)
- - -
[docs]def unique_all(x: dpt.usm_ndarray) -> UniqueAllResult: - """unique_all(x) - - Returns the unique elements of an input array `x`, the first occurring - indices for each unique element in `x`, the indices from the set of unique - elements that reconstruct `x`, and the corresponding counts for each - unique element in `x`. - - Args: - x (usm_ndarray): - input array. Inputs with more than one dimension are flattened. - Returns: - tuple[usm_ndarray, usm_ndarray, usm_ndarray, usm_ndarray] - a namedtuple `(values, indices, inverse_indices, counts)` whose - - * first element has the field name `values` and is an array - containing the unique elements of `x`. The array has the same - data type as `x`. - * second element has the field name `indices` and is an array - the indices (of first occurrences) of `x` that result in - `values`. The array has the same shape as `values` and has the - default array index data type. - * third element has the field name `inverse_indices` and is an - array containing the indices of values that reconstruct `x`. - The array has the same shape as `x` and has the default array - index data type. - * fourth element has the field name `counts` and is an array - containing the number of times each unique element occurs in `x`. - This array has the same shape as `values` and has the default - array index data type. - """ - if not isinstance(x, dpt.usm_ndarray): - raise TypeError(f"Expected dpctl.tensor.usm_ndarray, got {type(x)}") - array_api_dev = x.device - exec_q = array_api_dev.sycl_queue - x_usm_type = x.usm_type - ind_dt = default_device_index_type(exec_q) - if x.ndim == 1: - fx = x - else: - fx = dpt.reshape(x, (x.size,), order="C") - sorting_ids = dpt.empty_like(fx, dtype=ind_dt, order="C") - unsorting_ids = dpt.empty_like(sorting_ids, dtype=ind_dt, order="C") - if fx.size == 0: - # original array contains no data - # so it can be safely returned as values - return UniqueAllResult( - fx, - sorting_ids, - dpt.reshape(unsorting_ids, x.shape), - dpt.empty_like(fx, dtype=ind_dt), - ) - _manager = du.SequentialOrderManager[exec_q] - dep_evs = _manager.submitted_events - if fx.flags.c_contiguous: - ht_ev, sort_ev = _argsort_ascending( - src=fx, - trailing_dims_to_sort=1, - dst=sorting_ids, - sycl_queue=exec_q, - depends=dep_evs, - ) - _manager.add_event_pair(ht_ev, sort_ev) - else: - tmp = dpt.empty_like(fx, order="C") - ht_ev, copy_ev = _copy_usm_ndarray_into_usm_ndarray( - src=fx, dst=tmp, sycl_queue=exec_q, depends=dep_evs - ) - _manager.add_event_pair(ht_ev, copy_ev) - ht_ev, sort_ev = _argsort_ascending( - src=tmp, - trailing_dims_to_sort=1, - dst=sorting_ids, - sycl_queue=exec_q, - depends=[copy_ev], - ) - _manager.add_event_pair(ht_ev, sort_ev) - ht_ev, args_ev = _argsort_ascending( - src=sorting_ids, - trailing_dims_to_sort=1, - dst=unsorting_ids, - sycl_queue=exec_q, - depends=[sort_ev], - ) - _manager.add_event_pair(ht_ev, args_ev) - s = dpt.empty_like(fx) - # s = fx[sorting_ids] - ht_ev, take_ev = _take( - src=fx, - ind=(sorting_ids,), - dst=s, - axis_start=0, - mode=0, - sycl_queue=exec_q, - depends=[sort_ev], - ) - _manager.add_event_pair(ht_ev, take_ev) - unique_mask = dpt.empty(fx.shape, dtype="?", sycl_queue=exec_q) - ht_ev, uneq_ev = _not_equal( - src1=s[:-1], - src2=s[1:], - dst=unique_mask[1:], - sycl_queue=exec_q, - depends=[take_ev], - ) - _manager.add_event_pair(ht_ev, uneq_ev) - ht_ev, one_ev = _full_usm_ndarray( - fill_value=True, dst=unique_mask[0], sycl_queue=exec_q - ) - _manager.add_event_pair(ht_ev, one_ev) - cumsum = dpt.empty(unique_mask.shape, dtype=dpt.int64, sycl_queue=exec_q) - # synchronizing call - n_uniques = mask_positions( - unique_mask, cumsum, sycl_queue=exec_q, depends=[uneq_ev, one_ev] - ) - if n_uniques == fx.size: - _counts = dpt.ones( - n_uniques, dtype=ind_dt, usm_type=x_usm_type, sycl_queue=exec_q - ) - return UniqueAllResult( - s, - sorting_ids, - dpt.reshape(unsorting_ids, x.shape), - _counts, - ) - unique_vals = dpt.empty( - n_uniques, dtype=x.dtype, usm_type=x_usm_type, sycl_queue=exec_q - ) - ht_ev, uv_ev = _extract( - src=s, - cumsum=cumsum, - axis_start=0, - axis_end=1, - dst=unique_vals, - sycl_queue=exec_q, - ) - _manager.add_event_pair(ht_ev, uv_ev) - cum_unique_counts = dpt.empty( - n_uniques + 1, dtype=ind_dt, usm_type=x_usm_type, sycl_queue=exec_q - ) - idx = dpt.empty(x.size, dtype=ind_dt, sycl_queue=exec_q) - ht_ev, id_ev = _linspace_step(start=0, dt=1, dst=idx, sycl_queue=exec_q) - _manager.add_event_pair(ht_ev, id_ev) - ht_ev, extr_ev = _extract( - src=idx, - cumsum=cumsum, - axis_start=0, - axis_end=1, - dst=cum_unique_counts[:-1], - sycl_queue=exec_q, - depends=[id_ev], - ) - _manager.add_event_pair(ht_ev, extr_ev) - ht_ev, set_ev = _full_usm_ndarray( - x.size, dst=cum_unique_counts[-1], sycl_queue=exec_q - ) - _manager.add_event_pair(ht_ev, set_ev) - _counts = dpt.empty_like(cum_unique_counts[1:]) - ht_ev, sub_ev = _subtract( - src1=cum_unique_counts[1:], - src2=cum_unique_counts[:-1], - dst=_counts, - sycl_queue=exec_q, - depends=[set_ev, extr_ev], - ) - _manager.add_event_pair(ht_ev, sub_ev) - - inv = dpt.empty_like(x, dtype=ind_dt, order="C") - ht_ev, ssl_ev = _searchsorted_left( - hay=unique_vals, - needles=x, - positions=inv, - sycl_queue=exec_q, - depends=[ - uv_ev, - ], - ) - _manager.add_event_pair(ht_ev, ssl_ev) - return UniqueAllResult( - unique_vals, - sorting_ids[cum_unique_counts[:-1]], - inv, - _counts, - )
-
-
-
-
- - -
-
- - Made with Sphinx and @pradyunsg's - - Furo - -
-
- -
-
- -
-
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/pulls/1961/_modules/dpctl/tensor/_sorting.html b/pulls/1961/_modules/dpctl/tensor/_sorting.html deleted file mode 100644 index 34fed2f569..0000000000 --- a/pulls/1961/_modules/dpctl/tensor/_sorting.html +++ /dev/null @@ -1,1253 +0,0 @@ - - - - - - - - - - - - dpctl.tensor._sorting - Data Parallel Control (dpctl) 0.19.0dev0 documentation - - - - - - - - - - - - - - - - - - - Contents - - - - - - Menu - - - - - - - - Expand - - - - - - Light mode - - - - - - - - - - - - - - Dark mode - - - - - - - Auto light/dark, in light mode - - - - - - - - - - - - - - - Auto light/dark, in dark mode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Skip to content - - - -
-
-
- -
- -
-
- -
- -
-
- -
-
-
- - - - - Back to top - -
-
- -
- -
-
-

Source code for dpctl.tensor._sorting

-#                       Data Parallel Control (dpctl)
-#
-#  Copyright 2020-2025 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.
-
-import operator
-from typing import NamedTuple
-
-import dpctl.tensor as dpt
-import dpctl.tensor._tensor_impl as ti
-import dpctl.utils as du
-
-from ._numpy_helper import normalize_axis_index
-from ._tensor_sorting_impl import (
-    _argsort_ascending,
-    _argsort_descending,
-    _radix_argsort_ascending,
-    _radix_argsort_descending,
-    _radix_sort_ascending,
-    _radix_sort_descending,
-    _radix_sort_dtype_supported,
-    _sort_ascending,
-    _sort_descending,
-    _topk,
-)
-
-__all__ = ["sort", "argsort"]
-
-
-def _get_mergesort_impl_fn(descending):
-    return _sort_descending if descending else _sort_ascending
-
-
-def _get_radixsort_impl_fn(descending):
-    return _radix_sort_descending if descending else _radix_sort_ascending
-
-
-
[docs]def sort(x, /, *, axis=-1, descending=False, stable=True, kind=None): - """sort(x, axis=-1, descending=False, stable=True) - - Returns a sorted copy of an input array `x`. - - Args: - x (usm_ndarray): - input array. - axis (Optional[int]): - axis along which to sort. If set to `-1`, the function - must sort along the last axis. Default: `-1`. - descending (Optional[bool]): - sort order. If `True`, the array must be sorted in descending - order (by value). If `False`, the array must be sorted in - ascending order (by value). Default: `False`. - stable (Optional[bool]): - sort stability. If `True`, the returned array must maintain the - relative order of `x` values which compare as equal. If `False`, - the returned array may or may not maintain the relative order of - `x` values which compare as equal. Default: `True`. - kind (Optional[Literal["stable", "mergesort", "radixsort"]]): - Sorting algorithm. The default is `"stable"`, which uses parallel - merge-sort or parallel radix-sort algorithms depending on the - array data type. - Returns: - usm_ndarray: - a sorted array. The returned array has the same data type and - the same shape as the input array `x`. - """ - if not isinstance(x, dpt.usm_ndarray): - raise TypeError( - f"Expected type dpctl.tensor.usm_ndarray, got {type(x)}" - ) - nd = x.ndim - if nd == 0: - axis = normalize_axis_index(axis, ndim=1, msg_prefix="axis") - return dpt.copy(x, order="C") - else: - axis = normalize_axis_index(axis, ndim=nd, msg_prefix="axis") - a1 = axis + 1 - if a1 == nd: - perm = list(range(nd)) - arr = x - else: - perm = [i for i in range(nd) if i != axis] + [ - axis, - ] - arr = dpt.permute_dims(x, perm) - if kind is None: - kind = "stable" - if not isinstance(kind, str) or kind not in [ - "stable", - "radixsort", - "mergesort", - ]: - raise ValueError( - "Unsupported kind value. Expected 'stable', 'mergesort', " - f"or 'radixsort', but got '{kind}'" - ) - if kind == "mergesort": - impl_fn = _get_mergesort_impl_fn(descending) - elif kind == "radixsort": - if _radix_sort_dtype_supported(x.dtype.num): - impl_fn = _get_radixsort_impl_fn(descending) - else: - raise ValueError(f"Radix sort is not supported for {x.dtype}") - else: - dt = x.dtype - if dt in [dpt.bool, dpt.uint8, dpt.int8, dpt.int16, dpt.uint16]: - impl_fn = _get_radixsort_impl_fn(descending) - else: - impl_fn = _get_mergesort_impl_fn(descending) - exec_q = x.sycl_queue - _manager = du.SequentialOrderManager[exec_q] - dep_evs = _manager.submitted_events - if arr.flags.c_contiguous: - res = dpt.empty_like(arr, order="C") - ht_ev, impl_ev = impl_fn( - src=arr, - trailing_dims_to_sort=1, - dst=res, - sycl_queue=exec_q, - depends=dep_evs, - ) - _manager.add_event_pair(ht_ev, impl_ev) - else: - tmp = dpt.empty_like(arr, order="C") - ht_ev, copy_ev = ti._copy_usm_ndarray_into_usm_ndarray( - src=arr, dst=tmp, sycl_queue=exec_q, depends=dep_evs - ) - _manager.add_event_pair(ht_ev, copy_ev) - res = dpt.empty_like(arr, order="C") - ht_ev, impl_ev = impl_fn( - src=tmp, - trailing_dims_to_sort=1, - dst=res, - sycl_queue=exec_q, - depends=[copy_ev], - ) - _manager.add_event_pair(ht_ev, impl_ev) - if a1 != nd: - inv_perm = sorted(range(nd), key=lambda d: perm[d]) - res = dpt.permute_dims(res, inv_perm) - return res
- - -def _get_mergeargsort_impl_fn(descending): - return _argsort_descending if descending else _argsort_ascending - - -def _get_radixargsort_impl_fn(descending): - return _radix_argsort_descending if descending else _radix_argsort_ascending - - -
[docs]def argsort(x, axis=-1, descending=False, stable=True, kind=None): - """argsort(x, axis=-1, descending=False, stable=True) - - Returns the indices that sort an array `x` along a specified axis. - - Args: - x (usm_ndarray): - input array. - axis (Optional[int]): - axis along which to sort. If set to `-1`, the function - must sort along the last axis. Default: `-1`. - descending (Optional[bool]): - sort order. If `True`, the array must be sorted in descending - order (by value). If `False`, the array must be sorted in - ascending order (by value). Default: `False`. - stable (Optional[bool]): - sort stability. If `True`, the returned array must maintain the - relative order of `x` values which compare as equal. If `False`, - the returned array may or may not maintain the relative order of - `x` values which compare as equal. Default: `True`. - kind (Optional[Literal["stable", "mergesort", "radixsort"]]): - Sorting algorithm. The default is `"stable"`, which uses parallel - merge-sort or parallel radix-sort algorithms depending on the - array data type. - - Returns: - usm_ndarray: - an array of indices. The returned array has the same shape as - the input array `x`. The return array has default array index - data type. - """ - if not isinstance(x, dpt.usm_ndarray): - raise TypeError( - f"Expected type dpctl.tensor.usm_ndarray, got {type(x)}" - ) - nd = x.ndim - if nd == 0: - axis = normalize_axis_index(axis, ndim=1, msg_prefix="axis") - return dpt.zeros_like( - x, dtype=ti.default_device_index_type(x.sycl_queue), order="C" - ) - else: - axis = normalize_axis_index(axis, ndim=nd, msg_prefix="axis") - a1 = axis + 1 - if a1 == nd: - perm = list(range(nd)) - arr = x - else: - perm = [i for i in range(nd) if i != axis] + [ - axis, - ] - arr = dpt.permute_dims(x, perm) - if kind is None: - kind = "stable" - if not isinstance(kind, str) or kind not in [ - "stable", - "radixsort", - "mergesort", - ]: - raise ValueError( - "Unsupported kind value. Expected 'stable', 'mergesort', " - f"or 'radixsort', but got '{kind}'" - ) - if kind == "mergesort": - impl_fn = _get_mergeargsort_impl_fn(descending) - elif kind == "radixsort": - if _radix_sort_dtype_supported(x.dtype.num): - impl_fn = _get_radixargsort_impl_fn(descending) - else: - raise ValueError(f"Radix sort is not supported for {x.dtype}") - else: - dt = x.dtype - if dt in [dpt.bool, dpt.uint8, dpt.int8, dpt.int16, dpt.uint16]: - impl_fn = _get_radixargsort_impl_fn(descending) - else: - impl_fn = _get_mergeargsort_impl_fn(descending) - exec_q = x.sycl_queue - _manager = du.SequentialOrderManager[exec_q] - dep_evs = _manager.submitted_events - index_dt = ti.default_device_index_type(exec_q) - if arr.flags.c_contiguous: - res = dpt.empty_like(arr, dtype=index_dt, order="C") - ht_ev, impl_ev = impl_fn( - src=arr, - trailing_dims_to_sort=1, - dst=res, - sycl_queue=exec_q, - depends=dep_evs, - ) - _manager.add_event_pair(ht_ev, impl_ev) - else: - tmp = dpt.empty_like(arr, order="C") - ht_ev, copy_ev = ti._copy_usm_ndarray_into_usm_ndarray( - src=arr, dst=tmp, sycl_queue=exec_q, depends=dep_evs - ) - _manager.add_event_pair(ht_ev, copy_ev) - res = dpt.empty_like(arr, dtype=index_dt, order="C") - ht_ev, impl_ev = impl_fn( - src=tmp, - trailing_dims_to_sort=1, - dst=res, - sycl_queue=exec_q, - depends=[copy_ev], - ) - _manager.add_event_pair(ht_ev, impl_ev) - if a1 != nd: - inv_perm = sorted(range(nd), key=lambda d: perm[d]) - res = dpt.permute_dims(res, inv_perm) - return res
- - -def _get_top_k_largest(mode): - modes = {"largest": True, "smallest": False} - try: - return modes[mode] - except KeyError: - raise ValueError( - f"`mode` must be `largest` or `smallest`. Got `{mode}`." - ) - - -class TopKResult(NamedTuple): - values: dpt.usm_ndarray - indices: dpt.usm_ndarray - - -
[docs]def top_k(x, k, /, *, axis=None, mode="largest"): - """top_k(x, k, axis=None, mode="largest") - - Returns the `k` largest or smallest values and their indices in the input - array `x` along the specified axis `axis`. - - Args: - x (usm_ndarray): - input array. - k (int): - number of elements to find. Must be a positive integer value. - axis (Optional[int]): - axis along which to search. If `None`, the search will be performed - over the flattened array. Default: ``None``. - mode (Literal["largest", "smallest"]): - search mode. Must be one of the following modes: - - - `"largest"`: return the `k` largest elements. - - `"smallest"`: return the `k` smallest elements. - - Default: `"largest"`. - - Returns: - tuple[usm_ndarray, usm_ndarray] - a namedtuple `(values, indices)` whose - - * first element `values` will be an array containing the `k` - largest or smallest elements of `x`. The array has the same data - type as `x`. If `axis` was `None`, `values` will be a - one-dimensional array with shape `(k,)` and otherwise, `values` - will have shape `x.shape[:axis] + (k,) + x.shape[axis+1:]` - * second element `indices` will be an array containing indices of - `x` that result in `values`. The array will have the same shape - as `values` and will have the default array index data type. - """ - largest = _get_top_k_largest(mode) - if not isinstance(x, dpt.usm_ndarray): - raise TypeError( - f"Expected type dpctl.tensor.usm_ndarray, got {type(x)}" - ) - - k = operator.index(k) - if k < 0: - raise ValueError("`k` must be a positive integer value") - - nd = x.ndim - if axis is None: - sz = x.size - if nd == 0: - if k > 1: - raise ValueError(f"`k`={k} is out of bounds 1") - return TopKResult( - dpt.copy(x, order="C"), - dpt.zeros_like( - x, dtype=ti.default_device_index_type(x.sycl_queue) - ), - ) - arr = x - n_search_dims = None - res_sh = k - else: - axis = normalize_axis_index(axis, ndim=nd, msg_prefix="axis") - sz = x.shape[axis] - a1 = axis + 1 - if a1 == nd: - perm = list(range(nd)) - arr = x - else: - perm = [i for i in range(nd) if i != axis] + [ - axis, - ] - arr = dpt.permute_dims(x, perm) - n_search_dims = 1 - res_sh = arr.shape[: nd - 1] + (k,) - - if k > sz: - raise ValueError(f"`k`={k} is out of bounds {sz}") - - exec_q = x.sycl_queue - _manager = du.SequentialOrderManager[exec_q] - dep_evs = _manager.submitted_events - - res_usm_type = arr.usm_type - if arr.flags.c_contiguous: - vals = dpt.empty( - res_sh, - dtype=arr.dtype, - usm_type=res_usm_type, - order="C", - sycl_queue=exec_q, - ) - inds = dpt.empty( - res_sh, - dtype=ti.default_device_index_type(exec_q), - usm_type=res_usm_type, - order="C", - sycl_queue=exec_q, - ) - ht_ev, impl_ev = _topk( - src=arr, - trailing_dims_to_search=n_search_dims, - k=k, - largest=largest, - vals=vals, - inds=inds, - sycl_queue=exec_q, - depends=dep_evs, - ) - _manager.add_event_pair(ht_ev, impl_ev) - else: - tmp = dpt.empty_like(arr, order="C") - ht_ev, copy_ev = ti._copy_usm_ndarray_into_usm_ndarray( - src=arr, dst=tmp, sycl_queue=exec_q, depends=dep_evs - ) - _manager.add_event_pair(ht_ev, copy_ev) - vals = dpt.empty( - res_sh, - dtype=arr.dtype, - usm_type=res_usm_type, - order="C", - sycl_queue=exec_q, - ) - inds = dpt.empty( - res_sh, - dtype=ti.default_device_index_type(exec_q), - usm_type=res_usm_type, - order="C", - sycl_queue=exec_q, - ) - ht_ev, impl_ev = _topk( - src=tmp, - trailing_dims_to_search=n_search_dims, - k=k, - largest=largest, - vals=vals, - inds=inds, - sycl_queue=exec_q, - depends=[copy_ev], - ) - _manager.add_event_pair(ht_ev, impl_ev) - if axis is not None and a1 != nd: - inv_perm = sorted(range(nd), key=lambda d: perm[d]) - vals = dpt.permute_dims(vals, inv_perm) - inds = dpt.permute_dims(inds, inv_perm) - - return TopKResult(vals, inds)
-
-
-
-
- - -
-
- - Made with Sphinx and @pradyunsg's - - Furo - -
-
- -
-
- -
-
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/pulls/1961/_modules/dpctl/tensor/_statistical_functions.html b/pulls/1961/_modules/dpctl/tensor/_statistical_functions.html deleted file mode 100644 index 00a2e52c29..0000000000 --- a/pulls/1961/_modules/dpctl/tensor/_statistical_functions.html +++ /dev/null @@ -1,1186 +0,0 @@ - - - - - - - - - - - - dpctl.tensor._statistical_functions - Data Parallel Control (dpctl) 0.19.0dev0 documentation - - - - - - - - - - - - - - - - - - - Contents - - - - - - Menu - - - - - - - - Expand - - - - - - Light mode - - - - - - - - - - - - - - Dark mode - - - - - - - Auto light/dark, in light mode - - - - - - - - - - - - - - - Auto light/dark, in dark mode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Skip to content - - - -
-
-
- -
- -
-
- -
- -
-
- -
-
-
- - - - - Back to top - -
-
- -
- -
-
-

Source code for dpctl.tensor._statistical_functions

-#                       Data Parallel Control (dpctl)
-#
-#  Copyright 2020-2025 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.
-
-import dpctl.tensor as dpt
-import dpctl.tensor._tensor_elementwise_impl as tei
-import dpctl.tensor._tensor_impl as ti
-import dpctl.tensor._tensor_reductions_impl as tri
-import dpctl.utils as du
-
-from ._numpy_helper import normalize_axis_tuple
-
-
-def _var_impl(x, axis, correction, keepdims):
-    nd = x.ndim
-    if axis is None:
-        axis = tuple(range(nd))
-    if not isinstance(axis, (tuple, list)):
-        axis = (axis,)
-    axis = normalize_axis_tuple(axis, nd, "axis")
-    perm = []
-    nelems = 1
-    for i in range(nd):
-        if i not in axis:
-            perm.append(i)
-        else:
-            nelems *= x.shape[i]
-    red_nd = len(axis)
-    perm = perm + list(axis)
-    q = x.sycl_queue
-    inp_dt = x.dtype
-    res_dt = (
-        inp_dt
-        if inp_dt.kind == "f"
-        else dpt.dtype(ti.default_device_fp_type(q))
-    )
-    res_usm_type = x.usm_type
-
-    _manager = du.SequentialOrderManager[q]
-    dep_evs = _manager.submitted_events
-    if inp_dt != res_dt:
-        buf = dpt.empty_like(x, dtype=res_dt)
-        ht_e_buf, c_e1 = ti._copy_usm_ndarray_into_usm_ndarray(
-            src=x, dst=buf, sycl_queue=q, depends=dep_evs
-        )
-        _manager.add_event_pair(ht_e_buf, c_e1)
-    else:
-        buf = x
-    # calculate mean
-    buf2 = dpt.permute_dims(buf, perm)
-    res_shape = buf2.shape[: nd - red_nd]
-    # use keepdims=True path for later broadcasting
-    if red_nd == 0:
-        mean_ary = dpt.empty_like(buf)
-        dep_evs = _manager.submitted_events
-        ht_e1, c_e2 = ti._copy_usm_ndarray_into_usm_ndarray(
-            src=buf, dst=mean_ary, sycl_queue=q, depends=dep_evs
-        )
-        _manager.add_event_pair(ht_e1, c_e2)
-    else:
-        mean_ary = dpt.empty(
-            res_shape,
-            dtype=res_dt,
-            usm_type=res_usm_type,
-            sycl_queue=q,
-        )
-        dep_evs = _manager.submitted_events
-        ht_e1, r_e1 = tri._sum_over_axis(
-            src=buf2,
-            trailing_dims_to_reduce=red_nd,
-            dst=mean_ary,
-            sycl_queue=q,
-            depends=dep_evs,
-        )
-        _manager.add_event_pair(ht_e1, r_e1)
-
-        mean_ary_shape = res_shape + (1,) * red_nd
-        inv_perm = sorted(range(nd), key=lambda d: perm[d])
-        mean_ary = dpt.permute_dims(
-            dpt.reshape(mean_ary, mean_ary_shape), inv_perm
-        )
-    # divide in-place to get mean
-    mean_ary_shape = mean_ary.shape
-
-    dep_evs = _manager.submitted_events
-    ht_e2, d_e1 = tei._divide_by_scalar(
-        src=mean_ary, scalar=nelems, dst=mean_ary, sycl_queue=q, depends=dep_evs
-    )
-    _manager.add_event_pair(ht_e2, d_e1)
-
-    # subtract mean from original array to get deviations
-    dev_ary = dpt.empty_like(buf)
-    if mean_ary_shape != buf.shape:
-        mean_ary = dpt.broadcast_to(mean_ary, buf.shape)
-    ht_e4, su_e = tei._subtract(
-        src1=buf, src2=mean_ary, dst=dev_ary, sycl_queue=q, depends=[d_e1]
-    )
-    _manager.add_event_pair(ht_e4, su_e)
-    # square deviations
-    ht_e5, sq_e = tei._square(
-        src=dev_ary, dst=dev_ary, sycl_queue=q, depends=[su_e]
-    )
-    _manager.add_event_pair(ht_e5, sq_e)
-
-    # take sum of squared deviations
-    dev_ary2 = dpt.permute_dims(dev_ary, perm)
-    if red_nd == 0:
-        res = dev_ary
-    else:
-        res = dpt.empty(
-            res_shape,
-            dtype=res_dt,
-            usm_type=res_usm_type,
-            sycl_queue=q,
-        )
-        ht_e6, r_e2 = tri._sum_over_axis(
-            src=dev_ary2,
-            trailing_dims_to_reduce=red_nd,
-            dst=res,
-            sycl_queue=q,
-            depends=[sq_e],
-        )
-        _manager.add_event_pair(ht_e6, r_e2)
-
-        if keepdims:
-            res_shape = res_shape + (1,) * red_nd
-            inv_perm = sorted(range(nd), key=lambda d: perm[d])
-            res = dpt.permute_dims(dpt.reshape(res, res_shape), inv_perm)
-    res_shape = res.shape
-    # when nelems - correction <= 0, yield nans
-    div = max(nelems - correction, 0)
-    if not div:
-        div = dpt.nan
-    dep_evs = _manager.submitted_events
-    ht_e7, d_e2 = tei._divide_by_scalar(
-        src=res, scalar=div, dst=res, sycl_queue=q, depends=dep_evs
-    )
-    _manager.add_event_pair(ht_e7, d_e2)
-    return res, [d_e2]
-
-
-
[docs]def mean(x, axis=None, keepdims=False): - """mean(x, axis=None, keepdims=False) - - Calculates the arithmetic mean of elements in the input array `x`. - - Args: - x (usm_ndarray): - input array. - axis (Optional[int, Tuple[int, ...]]): - axis or axes along which the arithmetic means must be computed. If - a tuple of unique integers, the means are computed over multiple - axes. If `None`, the mean is computed over the entire array. - Default: `None`. - keepdims (Optional[bool]): - if `True`, the reduced axes (dimensions) are included in the result - as singleton dimensions, so that the returned array remains - compatible with the input array according to Array Broadcasting - rules. Otherwise, if `False`, the reduced axes are not included in - the returned array. Default: `False`. - Returns: - usm_ndarray: - an array containing the arithmetic means. If the mean was computed - over the entire array, a zero-dimensional array is returned. - - If `x` has a floating-point data type, the returned array will have - the same data type as `x`. - If `x` has a boolean or integral data type, the returned array - will have the default floating point data type for the device - where input array `x` is allocated. - """ - if not isinstance(x, dpt.usm_ndarray): - raise TypeError(f"Expected dpctl.tensor.usm_ndarray, got {type(x)}") - nd = x.ndim - if axis is None: - axis = tuple(range(nd)) - if not isinstance(axis, (tuple, list)): - axis = (axis,) - axis = normalize_axis_tuple(axis, nd, "axis") - perm = [] - nelems = 1 - for i in range(nd): - if i not in axis: - perm.append(i) - else: - nelems *= x.shape[i] - sum_nd = len(axis) - perm = perm + list(axis) - arr2 = dpt.permute_dims(x, perm) - res_shape = arr2.shape[: nd - sum_nd] - q = x.sycl_queue - inp_dt = x.dtype - res_dt = ( - x.dtype - if x.dtype.kind in "fc" - else dpt.dtype(ti.default_device_fp_type(q)) - ) - res_usm_type = x.usm_type - if sum_nd == 0: - return dpt.astype(x, res_dt, copy=True) - - _manager = du.SequentialOrderManager[q] - dep_evs = _manager.submitted_events - if tri._sum_over_axis_dtype_supported(inp_dt, res_dt, res_usm_type, q): - res = dpt.empty( - res_shape, dtype=res_dt, usm_type=res_usm_type, sycl_queue=q - ) - ht_e1, r_e = tri._sum_over_axis( - src=arr2, - trailing_dims_to_reduce=sum_nd, - dst=res, - sycl_queue=q, - depends=dep_evs, - ) - _manager.add_event_pair(ht_e1, r_e) - else: - tmp = dpt.empty( - arr2.shape, dtype=res_dt, usm_type=res_usm_type, sycl_queue=q - ) - ht_e_cpy, cpy_e = ti._copy_usm_ndarray_into_usm_ndarray( - src=arr2, dst=tmp, sycl_queue=q, depends=dep_evs - ) - _manager.add_event_pair(ht_e_cpy, cpy_e) - res = dpt.empty( - res_shape, dtype=res_dt, usm_type=res_usm_type, sycl_queue=q - ) - ht_e_red, r_e = tri._sum_over_axis( - src=tmp, - trailing_dims_to_reduce=sum_nd, - dst=res, - sycl_queue=q, - depends=[cpy_e], - ) - _manager.add_event_pair(ht_e_red, r_e) - - if keepdims: - res_shape = res_shape + (1,) * sum_nd - inv_perm = sorted(range(nd), key=lambda d: perm[d]) - res = dpt.permute_dims(dpt.reshape(res, res_shape), inv_perm) - - dep_evs = _manager.submitted_events - ht_e2, div_e = tei._divide_by_scalar( - src=res, scalar=nelems, dst=res, sycl_queue=q, depends=dep_evs - ) - _manager.add_event_pair(ht_e2, div_e) - return res
- - -
[docs]def var(x, axis=None, correction=0.0, keepdims=False): - """var(x, axis=None, correction=0.0, keepdims=False) - - Calculates the variance of elements in the input array `x`. - - Args: - x (usm_ndarray): - input array. - axis (Optional[int, Tuple[int, ...]]): - axis or axes along which the variances must be computed. If a tuple - of unique integers, the variances are computed over multiple axes. - If `None`, the variance is computed over the entire array. - Default: `None`. - correction (Optional[float, int]): - degrees of freedom adjustment. The divisor used in calculating the - variance is `N - correction`, where `N` corresponds to the total - number of elements over which the variance is calculated. - Default: `0.0`. - keepdims (Optional[bool]): - if `True`, the reduced axes (dimensions) are included in the result - as singleton dimensions, so that the returned array remains - compatible with the input array according to Array Broadcasting - rules. Otherwise, if `False`, the reduced axes are not included in - the returned array. Default: `False`. - Returns: - usm_ndarray: - an array containing the variances. If the variance was computed - over the entire array, a zero-dimensional array is returned. - - If `x` has a real-valued floating-point data type, the returned - array will have the same data type as `x`. - If `x` has a boolean or integral data type, the returned array - will have the default floating point data type for the device - where input array `x` is allocated. - """ - if not isinstance(x, dpt.usm_ndarray): - raise TypeError(f"Expected dpctl.tensor.usm_ndarray, got {type(x)}") - - if not isinstance(correction, (int, float)): - raise TypeError( - "Expected a Python integer or float for `correction`, got" - f"{type(x)}" - ) - - if x.dtype.kind == "c": - raise ValueError("`var` does not support complex types") - - res, _ = _var_impl(x, axis, correction, keepdims) - return res
- - -
[docs]def std(x, axis=None, correction=0.0, keepdims=False): - """std(x, axis=None, correction=0.0, keepdims=False) - - Calculates the standard deviation of elements in the input array `x`. - - Args: - x (usm_ndarray): - input array. - axis (Optional[int, Tuple[int, ...]]): - axis or axes along which the standard deviations must be computed. - If a tuple of unique integers, the standard deviations are computed - over multiple axes. If `None`, the standard deviation is computed - over the entire array. Default: `None`. - correction (Optional[float, int]): - degrees of freedom adjustment. The divisor used in calculating the - standard deviation is `N - correction`, where `N` corresponds to the - total number of elements over which the standard deviation is - calculated. Default: `0.0`. - keepdims (Optional[bool]): - if `True`, the reduced axes (dimensions) are included in the result - as singleton dimensions, so that the returned array remains - compatible with the input array according to Array Broadcasting - rules. Otherwise, if `False`, the reduced axes are not included in - the returned array. Default: `False`. - Returns: - usm_ndarray: - an array containing the standard deviations. If the standard - deviation was computed over the entire array, a zero-dimensional - array is returned. - - If `x` has a real-valued floating-point data type, the returned - array will have the same data type as `x`. - If `x` has a boolean or integral data type, the returned array - will have the default floating point data type for the device - where input array `x` is allocated. - """ - if not isinstance(x, dpt.usm_ndarray): - raise TypeError(f"Expected dpctl.tensor.usm_ndarray, got {type(x)}") - - if not isinstance(correction, (int, float)): - raise TypeError( - "Expected a Python integer or float for `correction`," - f"got {type(x)}" - ) - - if x.dtype.kind == "c": - raise ValueError("`std` does not support complex types") - - exec_q = x.sycl_queue - _manager = du.SequentialOrderManager[exec_q] - res, deps = _var_impl(x, axis, correction, keepdims) - ht_ev, sqrt_ev = tei._sqrt( - src=res, dst=res, sycl_queue=exec_q, depends=deps - ) - _manager.add_event_pair(ht_ev, sqrt_ev) - return res
-
-
-
-
- - -
-
- - Made with Sphinx and @pradyunsg's - - Furo - -
-
- -
-
- -
-
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/pulls/1961/_modules/dpctl/tensor/_testing.html b/pulls/1961/_modules/dpctl/tensor/_testing.html deleted file mode 100644 index b1f7d715a4..0000000000 --- a/pulls/1961/_modules/dpctl/tensor/_testing.html +++ /dev/null @@ -1,971 +0,0 @@ - - - - - - - - - - - - dpctl.tensor._testing - Data Parallel Control (dpctl) 0.19.0dev0 documentation - - - - - - - - - - - - - - - - - - - Contents - - - - - - Menu - - - - - - - - Expand - - - - - - Light mode - - - - - - - - - - - - - - Dark mode - - - - - - - Auto light/dark, in light mode - - - - - - - - - - - - - - - Auto light/dark, in dark mode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Skip to content - - - -
-
-
- -
- -
-
- -
- -
-
- -
-
-
- - - - - Back to top - -
-
- -
- -
-
-

Source code for dpctl.tensor._testing

-#                      Data Parallel Control (dpctl)
-#
-# Copyright 2020-2025 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.
-
-import numpy as np
-
-import dpctl.tensor as dpt
-import dpctl.utils as du
-
-from ._manipulation_functions import _broadcast_shape_impl
-from ._type_utils import _to_device_supported_dtype
-
-
-def _allclose_complex_fp(z1, z2, atol, rtol, equal_nan):
-    z1r = dpt.real(z1)
-    z1i = dpt.imag(z1)
-    z2r = dpt.real(z2)
-    z2i = dpt.imag(z2)
-    if equal_nan:
-        check1 = dpt.all(dpt.isnan(z1r) == dpt.isnan(z2r)) and dpt.all(
-            dpt.isnan(z1i) == dpt.isnan(z2i)
-        )
-    else:
-        check1 = (
-            dpt.logical_not(dpt.any(dpt.isnan(z1r)))
-            and dpt.logical_not(dpt.any(dpt.isnan(z1i)))
-        ) and (
-            dpt.logical_not(dpt.any(dpt.isnan(z2r)))
-            and dpt.logical_not(dpt.any(dpt.isnan(z2i)))
-        )
-    if not check1:
-        return check1
-    mr = dpt.isinf(z1r)
-    mi = dpt.isinf(z1i)
-    check2 = dpt.all(mr == dpt.isinf(z2r)) and dpt.all(mi == dpt.isinf(z2i))
-    if not check2:
-        return check2
-    check3 = dpt.all(z1r[mr] == z2r[mr]) and dpt.all(z1i[mi] == z2i[mi])
-    if not check3:
-        return check3
-    mr = dpt.isfinite(z1r)
-    mi = dpt.isfinite(z1i)
-    mv1 = z1r[mr]
-    mv2 = z2r[mr]
-    check4 = dpt.all(
-        dpt.abs(mv1 - mv2)
-        < dpt.maximum(atol, rtol * dpt.maximum(dpt.abs(mv1), dpt.abs(mv2)))
-    )
-    if not check4:
-        return check4
-    mv1 = z1i[mi]
-    mv2 = z2i[mi]
-    check5 = dpt.all(
-        dpt.abs(mv1 - mv2)
-        <= dpt.maximum(atol, rtol * dpt.maximum(dpt.abs(mv1), dpt.abs(mv2)))
-    )
-    return check5
-
-
-def _allclose_real_fp(r1, r2, atol, rtol, equal_nan):
-    if equal_nan:
-        check1 = dpt.all(dpt.isnan(r1) == dpt.isnan(r2))
-    else:
-        check1 = dpt.logical_not(dpt.any(dpt.isnan(r1))) and dpt.logical_not(
-            dpt.any(dpt.isnan(r2))
-        )
-    if not check1:
-        return check1
-    mr = dpt.isinf(r1)
-    check2 = dpt.all(mr == dpt.isinf(r2))
-    if not check2:
-        return check2
-    check3 = dpt.all(r1[mr] == r2[mr])
-    if not check3:
-        return check3
-    m = dpt.isfinite(r1)
-    mv1 = r1[m]
-    mv2 = r2[m]
-    check4 = dpt.all(
-        dpt.abs(mv1 - mv2)
-        <= dpt.maximum(atol, rtol * dpt.maximum(dpt.abs(mv1), dpt.abs(mv2)))
-    )
-    return check4
-
-
-def _allclose_others(r1, r2):
-    return dpt.all(r1 == r2)
-
-
-
[docs]def allclose(a1, a2, atol=1e-8, rtol=1e-5, equal_nan=False): - """allclose(a1, a2, atol=1e-8, rtol=1e-5, equal_nan=False) - - Returns True if two arrays are element-wise equal within tolerances. - - The testing is based on the following elementwise comparison: - - abs(a - b) <= max(atol, rtol * max(abs(a), abs(b))) - """ - if not isinstance(a1, dpt.usm_ndarray): - raise TypeError( - f"Expected dpctl.tensor.usm_ndarray type, got {type(a1)}." - ) - if not isinstance(a2, dpt.usm_ndarray): - raise TypeError( - f"Expected dpctl.tensor.usm_ndarray type, got {type(a2)}." - ) - atol = float(atol) - rtol = float(rtol) - if atol < 0.0 or rtol < 0.0: - raise ValueError( - "Absolute and relative tolerances must be non-negative" - ) - equal_nan = bool(equal_nan) - exec_q = du.get_execution_queue(tuple(a.sycl_queue for a in (a1, a2))) - if exec_q is None: - raise du.ExecutionPlacementError( - "Execution placement can not be unambiguously inferred " - "from input arguments." - ) - res_sh = _broadcast_shape_impl([a1.shape, a2.shape]) - b1 = a1 - b2 = a2 - if b1.dtype == b2.dtype: - res_dt = b1.dtype - else: - res_dt = np.promote_types(b1.dtype, b2.dtype) - res_dt = _to_device_supported_dtype(res_dt, exec_q.sycl_device) - b1 = dpt.astype(b1, res_dt) - b2 = dpt.astype(b2, res_dt) - - b1 = dpt.broadcast_to(b1, res_sh) - b2 = dpt.broadcast_to(b2, res_sh) - - k = b1.dtype.kind - if k == "c": - return _allclose_complex_fp(b1, b2, atol, rtol, equal_nan) - elif k == "f": - return _allclose_real_fp(b1, b2, atol, rtol, equal_nan) - else: - return _allclose_others(b1, b2)
-
-
-
-
- - -
-
- - Made with Sphinx and @pradyunsg's - - Furo - -
-
- -
-
- -
-
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/pulls/1961/_modules/dpctl/tensor/_type_utils.html b/pulls/1961/_modules/dpctl/tensor/_type_utils.html deleted file mode 100644 index 7c103bc4d8..0000000000 --- a/pulls/1961/_modules/dpctl/tensor/_type_utils.html +++ /dev/null @@ -1,1800 +0,0 @@ - - - - - - - - - - - - dpctl.tensor._type_utils - Data Parallel Control (dpctl) 0.19.0dev0 documentation - - - - - - - - - - - - - - - - - - - Contents - - - - - - Menu - - - - - - - - Expand - - - - - - Light mode - - - - - - - - - - - - - - Dark mode - - - - - - - Auto light/dark, in light mode - - - - - - - - - - - - - - - Auto light/dark, in dark mode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Skip to content - - - -
-
-
- -
- -
-
- -
- -
-
- -
-
-
- - - - - Back to top - -
-
- -
- -
-
-

Source code for dpctl.tensor._type_utils

-#                      Data Parallel Control (dpctl)
-#
-# Copyright 2020-2025 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.
-from __future__ import annotations
-
-import numpy as np
-
-import dpctl.tensor as dpt
-import dpctl.tensor._tensor_impl as ti
-
-
-def _all_data_types(_fp16, _fp64):
-    _non_fp_types = [
-        dpt.bool,
-        dpt.int8,
-        dpt.uint8,
-        dpt.int16,
-        dpt.uint16,
-        dpt.int32,
-        dpt.uint32,
-        dpt.int64,
-        dpt.uint64,
-    ]
-    if _fp64:
-        if _fp16:
-            return _non_fp_types + [
-                dpt.float16,
-                dpt.float32,
-                dpt.float64,
-                dpt.complex64,
-                dpt.complex128,
-            ]
-        else:
-            return _non_fp_types + [
-                dpt.float32,
-                dpt.float64,
-                dpt.complex64,
-                dpt.complex128,
-            ]
-    else:
-        if _fp16:
-            return _non_fp_types + [
-                dpt.float16,
-                dpt.float32,
-                dpt.complex64,
-            ]
-        else:
-            return _non_fp_types + [
-                dpt.float32,
-                dpt.complex64,
-            ]
-
-
-def _is_maximal_inexact_type(dt: dpt.dtype, _fp16: bool, _fp64: bool):
-    """
-    Return True if data type `dt` is the
-    maximal size inexact data type
-    """
-    if _fp64:
-        return dt in [dpt.float64, dpt.complex128]
-    return dt in [dpt.float32, dpt.complex64]
-
-
-def _dtype_supported_by_device_impl(
-    dt: dpt.dtype, has_fp16: bool, has_fp64: bool
-) -> bool:
-    if has_fp64:
-        if not has_fp16:
-            if dt is dpt.float16:
-                return False
-    else:
-        if dt is dpt.float64:
-            return False
-        elif dt is dpt.complex128:
-            return False
-        if not has_fp16 and dt is dpt.float16:
-            return False
-    return True
-
-
-def _can_cast(
-    from_: dpt.dtype, to_: dpt.dtype, _fp16: bool, _fp64: bool, casting="safe"
-) -> bool:
-    """
-    Can `from_` be cast to `to_` safely on a device with
-    fp16 and fp64 aspects as given?
-    """
-    if not _dtype_supported_by_device_impl(to_, _fp16, _fp64):
-        return False
-    can_cast_v = np.can_cast(from_, to_, casting=casting)  # ask NumPy
-    if _fp16 and _fp64:
-        return can_cast_v
-    if not can_cast_v:
-        if (
-            from_.kind in "biu"
-            and to_.kind in "fc"
-            and _is_maximal_inexact_type(to_, _fp16, _fp64)
-        ):
-            return True
-
-    return can_cast_v
-
-
-def _to_device_supported_dtype_impl(dt, has_fp16, has_fp64):
-    if has_fp64:
-        if not has_fp16:
-            if dt is dpt.float16:
-                return dpt.float32
-    else:
-        if dt is dpt.float64:
-            return dpt.float32
-        elif dt is dpt.complex128:
-            return dpt.complex64
-        if not has_fp16 and dt is dpt.float16:
-            return dpt.float32
-    return dt
-
-
-def _to_device_supported_dtype(dt, dev):
-    has_fp16 = dev.has_aspect_fp16
-    has_fp64 = dev.has_aspect_fp64
-
-    return _to_device_supported_dtype_impl(dt, has_fp16, has_fp64)
-
-
-def _acceptance_fn_default_unary(arg_dtype, ret_buf_dt, res_dt, sycl_dev):
-    return True
-
-
-def _acceptance_fn_reciprocal(arg_dtype, buf_dt, res_dt, sycl_dev):
-    # if the kind of result is different from the kind of input, we use the
-    # default floating-point dtype for the resulting kind. This guarantees
-    # alignment of reciprocal and divide output types.
-    if buf_dt.kind != arg_dtype.kind:
-        default_dt = _get_device_default_dtype(res_dt.kind, sycl_dev)
-        if res_dt == default_dt:
-            return True
-        else:
-            return False
-    else:
-        return True
-
-
-def _acceptance_fn_negative(arg_dtype, buf_dt, res_dt, sycl_dev):
-    # negative is not defined for boolean data type
-    if arg_dtype.char == "?":
-        raise ValueError(
-            "The `negative` function, the `-` operator, is not supported "
-            "for inputs of data type bool, use the `~` operator or the "
-            "`logical_not` function instead"
-        )
-    else:
-        return True
-
-
-def _acceptance_fn_subtract(
-    arg1_dtype, arg2_dtype, buf1_dt, buf2_dt, res_dt, sycl_dev
-):
-    # subtract is not defined for boolean data type
-    if arg1_dtype.char == "?" and arg2_dtype.char == "?":
-        raise ValueError(
-            "The `subtract` function, the `-` operator, is not supported "
-            "for inputs of data type bool, use the `^` operator,  the "
-            "`bitwise_xor`, or the `logical_xor` function instead"
-        )
-    else:
-        return True
-
-
-def _find_buf_dtype(arg_dtype, query_fn, sycl_dev, acceptance_fn):
-    res_dt = query_fn(arg_dtype)
-    if res_dt:
-        return None, res_dt
-
-    _fp16 = sycl_dev.has_aspect_fp16
-    _fp64 = sycl_dev.has_aspect_fp64
-    all_dts = _all_data_types(_fp16, _fp64)
-    for buf_dt in all_dts:
-        if _can_cast(arg_dtype, buf_dt, _fp16, _fp64):
-            res_dt = query_fn(buf_dt)
-            if res_dt:
-                acceptable = acceptance_fn(arg_dtype, buf_dt, res_dt, sycl_dev)
-                if acceptable:
-                    return buf_dt, res_dt
-                else:
-                    continue
-
-    return None, None
-
-
-def _get_device_default_dtype(dt_kind, sycl_dev):
-    if dt_kind == "b":
-        return dpt.dtype(ti.default_device_bool_type(sycl_dev))
-    elif dt_kind == "i":
-        return dpt.dtype(ti.default_device_int_type(sycl_dev))
-    elif dt_kind == "u":
-        return dpt.dtype(ti.default_device_uint_type(sycl_dev))
-    elif dt_kind == "f":
-        return dpt.dtype(ti.default_device_fp_type(sycl_dev))
-    elif dt_kind == "c":
-        return dpt.dtype(ti.default_device_complex_type(sycl_dev))
-    raise RuntimeError
-
-
-def _acceptance_fn_default_binary(
-    arg1_dtype, arg2_dtype, ret_buf1_dt, ret_buf2_dt, res_dt, sycl_dev
-):
-    return True
-
-
-def _acceptance_fn_divide(
-    arg1_dtype, arg2_dtype, ret_buf1_dt, ret_buf2_dt, res_dt, sycl_dev
-):
-    # both are being promoted, if the kind of result is
-    # different than the kind of original input dtypes,
-    # we use default dtype for the resulting kind.
-    # This covers, e.g. (array_dtype_i1 / array_dtype_u1)
-    # result of which in divide is double (in NumPy), but
-    # regular type promotion rules peg at float16
-    if (ret_buf1_dt.kind != arg1_dtype.kind) and (
-        ret_buf2_dt.kind != arg2_dtype.kind
-    ):
-        default_dt = _get_device_default_dtype(res_dt.kind, sycl_dev)
-        if res_dt == default_dt:
-            return True
-        else:
-            return False
-    else:
-        return True
-
-
-def _find_buf_dtype2(arg1_dtype, arg2_dtype, query_fn, sycl_dev, acceptance_fn):
-    res_dt = query_fn(arg1_dtype, arg2_dtype)
-    if res_dt:
-        return None, None, res_dt
-
-    _fp16 = sycl_dev.has_aspect_fp16
-    _fp64 = sycl_dev.has_aspect_fp64
-    all_dts = _all_data_types(_fp16, _fp64)
-    for buf1_dt in all_dts:
-        for buf2_dt in all_dts:
-            if _can_cast(arg1_dtype, buf1_dt, _fp16, _fp64) and _can_cast(
-                arg2_dtype, buf2_dt, _fp16, _fp64
-            ):
-                res_dt = query_fn(buf1_dt, buf2_dt)
-                if res_dt:
-                    ret_buf1_dt = None if buf1_dt == arg1_dtype else buf1_dt
-                    ret_buf2_dt = None if buf2_dt == arg2_dtype else buf2_dt
-                    if ret_buf1_dt is None or ret_buf2_dt is None:
-                        return ret_buf1_dt, ret_buf2_dt, res_dt
-                    else:
-                        acceptable = acceptance_fn(
-                            arg1_dtype,
-                            arg2_dtype,
-                            ret_buf1_dt,
-                            ret_buf2_dt,
-                            res_dt,
-                            sycl_dev,
-                        )
-                        if acceptable:
-                            return ret_buf1_dt, ret_buf2_dt, res_dt
-                        else:
-                            continue
-
-    return None, None, None
-
-
-def _find_buf_dtype_in_place_op(arg1_dtype, arg2_dtype, query_fn, sycl_dev):
-    res_dt = query_fn(arg1_dtype, arg2_dtype)
-    if res_dt:
-        return None, res_dt
-
-    _fp16 = sycl_dev.has_aspect_fp16
-    _fp64 = sycl_dev.has_aspect_fp64
-    if _can_cast(arg2_dtype, arg1_dtype, _fp16, _fp64, casting="same_kind"):
-        res_dt = query_fn(arg1_dtype, arg1_dtype)
-        if res_dt:
-            return arg1_dtype, res_dt
-
-    return None, None
-
-
-class WeakBooleanType:
-    "Python type representing type of Python boolean objects"
-
-    def __init__(self, o):
-        self.o_ = o
-
-    def get(self):
-        return self.o_
-
-
-class WeakIntegralType:
-    "Python type representing type of Python integral objects"
-
-    def __init__(self, o):
-        self.o_ = o
-
-    def get(self):
-        return self.o_
-
-
-class WeakFloatingType:
-    """Python type representing type of Python floating point objects"""
-
-    def __init__(self, o):
-        self.o_ = o
-
-    def get(self):
-        return self.o_
-
-
-class WeakComplexType:
-    """Python type representing type of Python complex floating point objects"""
-
-    def __init__(self, o):
-        self.o_ = o
-
-    def get(self):
-        return self.o_
-
-
-def _weak_type_num_kind(o):
-    _map = {"?": 0, "i": 1, "f": 2, "c": 3}
-    if isinstance(o, WeakBooleanType):
-        return _map["?"]
-    if isinstance(o, WeakIntegralType):
-        return _map["i"]
-    if isinstance(o, WeakFloatingType):
-        return _map["f"]
-    if isinstance(o, WeakComplexType):
-        return _map["c"]
-    raise TypeError(
-        f"Unexpected type {o} while expecting "
-        "`WeakBooleanType`, `WeakIntegralType`,"
-        "`WeakFloatingType`, or `WeakComplexType`."
-    )
-
-
-def _strong_dtype_num_kind(o):
-    _map = {"b": 0, "i": 1, "u": 1, "f": 2, "c": 3}
-    if not isinstance(o, dpt.dtype):
-        raise TypeError
-    k = o.kind
-    if k in _map:
-        return _map[k]
-    raise ValueError(f"Unrecognized kind {k} for dtype {o}")
-
-
-def _is_weak_dtype(dtype):
-    return isinstance(
-        dtype,
-        (WeakBooleanType, WeakIntegralType, WeakFloatingType, WeakComplexType),
-    )
-
-
-def _resolve_weak_types(o1_dtype, o2_dtype, dev):
-    "Resolves weak data type per NEP-0050"
-    if _is_weak_dtype(o1_dtype):
-        if _is_weak_dtype(o2_dtype):
-            raise ValueError
-        o1_kind_num = _weak_type_num_kind(o1_dtype)
-        o2_kind_num = _strong_dtype_num_kind(o2_dtype)
-        if o1_kind_num > o2_kind_num:
-            if isinstance(o1_dtype, WeakIntegralType):
-                return dpt.dtype(ti.default_device_int_type(dev)), o2_dtype
-            if isinstance(o1_dtype, WeakComplexType):
-                if o2_dtype is dpt.float16 or o2_dtype is dpt.float32:
-                    return dpt.complex64, o2_dtype
-                return (
-                    _to_device_supported_dtype(dpt.complex128, dev),
-                    o2_dtype,
-                )
-            return _to_device_supported_dtype(dpt.float64, dev), o2_dtype
-        else:
-            return o2_dtype, o2_dtype
-    elif _is_weak_dtype(o2_dtype):
-        o1_kind_num = _strong_dtype_num_kind(o1_dtype)
-        o2_kind_num = _weak_type_num_kind(o2_dtype)
-        if o2_kind_num > o1_kind_num:
-            if isinstance(o2_dtype, WeakIntegralType):
-                return o1_dtype, dpt.dtype(ti.default_device_int_type(dev))
-            if isinstance(o2_dtype, WeakComplexType):
-                if o1_dtype is dpt.float16 or o1_dtype is dpt.float32:
-                    return o1_dtype, dpt.complex64
-                return o1_dtype, _to_device_supported_dtype(dpt.complex128, dev)
-            return (
-                o1_dtype,
-                _to_device_supported_dtype(dpt.float64, dev),
-            )
-        else:
-            return o1_dtype, o1_dtype
-    else:
-        return o1_dtype, o2_dtype
-
-
-def _resolve_weak_types_all_py_ints(o1_dtype, o2_dtype, dev):
-    "Resolves weak data type per NEP-0050 for comparisons and"
-    " divide, where result type is known and special behavior"
-    "is needed to handle mixed integer kinds and Python integers"
-    "without overflow"
-    if _is_weak_dtype(o1_dtype):
-        if _is_weak_dtype(o2_dtype):
-            raise ValueError
-        o1_kind_num = _weak_type_num_kind(o1_dtype)
-        o2_kind_num = _strong_dtype_num_kind(o2_dtype)
-        if o1_kind_num > o2_kind_num:
-            if isinstance(o1_dtype, WeakIntegralType):
-                return dpt.dtype(ti.default_device_int_type(dev)), o2_dtype
-            if isinstance(o1_dtype, WeakComplexType):
-                if o2_dtype is dpt.float16 or o2_dtype is dpt.float32:
-                    return dpt.complex64, o2_dtype
-                return (
-                    _to_device_supported_dtype(dpt.complex128, dev),
-                    o2_dtype,
-                )
-            return _to_device_supported_dtype(dpt.float64, dev), o2_dtype
-        else:
-            if o1_kind_num == o2_kind_num and isinstance(
-                o1_dtype, WeakIntegralType
-            ):
-                o1_val = o1_dtype.get()
-                o2_iinfo = dpt.iinfo(o2_dtype)
-                if (o1_val < o2_iinfo.min) or (o1_val > o2_iinfo.max):
-                    return dpt.dtype(np.min_scalar_type(o1_val)), o2_dtype
-            return o2_dtype, o2_dtype
-    elif _is_weak_dtype(o2_dtype):
-        o1_kind_num = _strong_dtype_num_kind(o1_dtype)
-        o2_kind_num = _weak_type_num_kind(o2_dtype)
-        if o2_kind_num > o1_kind_num:
-            if isinstance(o2_dtype, WeakIntegralType):
-                return o1_dtype, dpt.dtype(ti.default_device_int_type(dev))
-            if isinstance(o2_dtype, WeakComplexType):
-                if o1_dtype is dpt.float16 or o1_dtype is dpt.float32:
-                    return o1_dtype, dpt.complex64
-                return o1_dtype, _to_device_supported_dtype(dpt.complex128, dev)
-            return (
-                o1_dtype,
-                _to_device_supported_dtype(dpt.float64, dev),
-            )
-        else:
-            if o1_kind_num == o2_kind_num and isinstance(
-                o2_dtype, WeakIntegralType
-            ):
-                o2_val = o2_dtype.get()
-                o1_iinfo = dpt.iinfo(o1_dtype)
-                if (o2_val < o1_iinfo.min) or (o2_val > o1_iinfo.max):
-                    return o1_dtype, dpt.dtype(np.min_scalar_type(o2_val))
-            return o1_dtype, o1_dtype
-    else:
-        return o1_dtype, o2_dtype
-
-
-def _resolve_one_strong_two_weak_types(st_dtype, dtype1, dtype2, dev):
-    "Resolves weak data types per NEP-0050,"
-    "where the second and third arguments are"
-    "permitted to be weak types"
-    if _is_weak_dtype(st_dtype):
-        raise ValueError
-    if _is_weak_dtype(dtype1):
-        if _is_weak_dtype(dtype2):
-            kind_num1 = _weak_type_num_kind(dtype1)
-            kind_num2 = _weak_type_num_kind(dtype2)
-            st_kind_num = _strong_dtype_num_kind(st_dtype)
-
-            if kind_num1 > st_kind_num:
-                if isinstance(dtype1, WeakIntegralType):
-                    ret_dtype1 = dpt.dtype(ti.default_device_int_type(dev))
-                elif isinstance(dtype1, WeakComplexType):
-                    if st_dtype is dpt.float16 or st_dtype is dpt.float32:
-                        ret_dtype1 = dpt.complex64
-                    ret_dtype1 = _to_device_supported_dtype(dpt.complex128, dev)
-                else:
-                    ret_dtype1 = _to_device_supported_dtype(dpt.float64, dev)
-            else:
-                ret_dtype1 = st_dtype
-
-            if kind_num2 > st_kind_num:
-                if isinstance(dtype2, WeakIntegralType):
-                    ret_dtype2 = dpt.dtype(ti.default_device_int_type(dev))
-                elif isinstance(dtype2, WeakComplexType):
-                    if st_dtype is dpt.float16 or st_dtype is dpt.float32:
-                        ret_dtype2 = dpt.complex64
-                    ret_dtype2 = _to_device_supported_dtype(dpt.complex128, dev)
-                else:
-                    ret_dtype2 = _to_device_supported_dtype(dpt.float64, dev)
-            else:
-                ret_dtype2 = st_dtype
-
-            return ret_dtype1, ret_dtype2
-
-        max_dt_num_kind, max_dtype = max(
-            [
-                (_strong_dtype_num_kind(st_dtype), st_dtype),
-                (_strong_dtype_num_kind(dtype2), dtype2),
-            ]
-        )
-        dt1_kind_num = _weak_type_num_kind(dtype1)
-        if dt1_kind_num > max_dt_num_kind:
-            if isinstance(dtype1, WeakIntegralType):
-                return dpt.dtype(ti.default_device_int_type(dev)), dtype2
-            if isinstance(dtype1, WeakComplexType):
-                if max_dtype is dpt.float16 or max_dtype is dpt.float32:
-                    return dpt.complex64, dtype2
-                return (
-                    _to_device_supported_dtype(dpt.complex128, dev),
-                    dtype2,
-                )
-            return _to_device_supported_dtype(dpt.float64, dev), dtype2
-        else:
-            return max_dtype, dtype2
-    elif _is_weak_dtype(dtype2):
-        max_dt_num_kind, max_dtype = max(
-            [
-                (_strong_dtype_num_kind(st_dtype), st_dtype),
-                (_strong_dtype_num_kind(dtype1), dtype1),
-            ]
-        )
-        dt2_kind_num = _weak_type_num_kind(dtype2)
-        if dt2_kind_num > max_dt_num_kind:
-            if isinstance(dtype2, WeakIntegralType):
-                return dtype1, dpt.dtype(ti.default_device_int_type(dev))
-            if isinstance(dtype2, WeakComplexType):
-                if max_dtype is dpt.float16 or max_dtype is dpt.float32:
-                    return dtype1, dpt.complex64
-                return (
-                    dtype1,
-                    _to_device_supported_dtype(dpt.complex128, dev),
-                )
-            return dtype1, _to_device_supported_dtype(dpt.float64, dev)
-        else:
-            return dtype1, max_dtype
-    else:
-        # both are strong dtypes
-        # return unmodified
-        return dtype1, dtype2
-
-
-def _resolve_one_strong_one_weak_types(st_dtype, dtype, dev):
-    "Resolves one weak data type with one strong data type per NEP-0050"
-    if _is_weak_dtype(st_dtype):
-        raise ValueError
-    if _is_weak_dtype(dtype):
-        st_kind_num = _strong_dtype_num_kind(st_dtype)
-        kind_num = _weak_type_num_kind(dtype)
-        if kind_num > st_kind_num:
-            if isinstance(dtype, WeakIntegralType):
-                return dpt.dtype(ti.default_device_int_type(dev))
-            if isinstance(dtype, WeakComplexType):
-                if st_dtype is dpt.float16 or st_dtype is dpt.float32:
-                    return dpt.complex64
-                return _to_device_supported_dtype(dpt.complex128, dev)
-            return _to_device_supported_dtype(dpt.float64, dev)
-        else:
-            return st_dtype
-    else:
-        return dtype
-
-
-class finfo_object:
-    """
-    `numpy.finfo` subclass which returns Python floating-point scalars for
-    `eps`, `max`, `min`, and `smallest_normal` attributes.
-    """
-
-    def __init__(self, dtype):
-        _supported_dtype([dpt.dtype(dtype)])
-        self._finfo = np.finfo(dtype)
-
-    @property
-    def bits(self):
-        """
-        number of bits occupied by the real-valued floating-point data type.
-        """
-        return int(self._finfo.bits)
-
-    @property
-    def smallest_normal(self):
-        """
-        smallest positive real-valued floating-point number with full
-        precision.
-        """
-        return float(self._finfo.smallest_normal)
-
-    @property
-    def tiny(self):
-        """an alias for `smallest_normal`"""
-        return float(self._finfo.tiny)
-
-    @property
-    def eps(self):
-        """
-        difference between 1.0 and the next smallest representable real-valued
-        floating-point number larger than 1.0 according to the IEEE-754
-        standard.
-        """
-        return float(self._finfo.eps)
-
-    @property
-    def epsneg(self):
-        """
-        difference between 1.0 and the next smallest representable real-valued
-        floating-point number smaller than 1.0 according to the IEEE-754
-        standard.
-        """
-        return float(self._finfo.epsneg)
-
-    @property
-    def min(self):
-        """smallest representable real-valued number."""
-        return float(self._finfo.min)
-
-    @property
-    def max(self):
-        "largest representable real-valued number."
-        return float(self._finfo.max)
-
-    @property
-    def resolution(self):
-        "the approximate decimal resolution of this type."
-        return float(self._finfo.resolution)
-
-    @property
-    def precision(self):
-        """
-        the approximate number of decimal digits to which this kind of
-        floating point type is precise.
-        """
-        return float(self._finfo.precision)
-
-    @property
-    def dtype(self):
-        """
-        the dtype for which finfo returns information. For complex input, the
-        returned dtype is the associated floating point dtype for its real and
-        complex components.
-        """
-        return self._finfo.dtype
-
-    def __str__(self):
-        return self._finfo.__str__()
-
-    def __repr__(self):
-        return self._finfo.__repr__()
-
-
-
[docs]def can_cast(from_, to, /, *, casting="safe") -> bool: - """ can_cast(from, to, casting="safe") - - Determines if one data type can be cast to another data type according \ - to Type Promotion Rules. - - Args: - from_ (Union[usm_ndarray, dtype]): - source data type. If `from_` is an array, a device-specific type - promotion rules apply. - to (dtype): - target data type - casting (Optional[str]): - controls what kind of data casting may occur. - - * "no" means data types should not be cast at all. - * "safe" means only casts that preserve values are allowed. - * "same_kind" means only safe casts and casts within a kind, - like `float64` to `float32`, are allowed. - * "unsafe" means any data conversion can be done. - - Default: `"safe"`. - - Returns: - bool: - Gives `True` if cast can occur according to the casting rule. - - Device-specific type promotion rules take into account which data type are - and are not supported by a specific device. - """ - if isinstance(to, dpt.usm_ndarray): - raise TypeError(f"Expected `dpt.dtype` type, got {type(to)}.") - - dtype_to = dpt.dtype(to) - _supported_dtype([dtype_to]) - - if isinstance(from_, dpt.usm_ndarray): - dtype_from = from_.dtype - return _can_cast( - dtype_from, - dtype_to, - from_.sycl_device.has_aspect_fp16, - from_.sycl_device.has_aspect_fp64, - casting=casting, - ) - else: - dtype_from = dpt.dtype(from_) - _supported_dtype([dtype_from]) - # query casting as if all dtypes are supported - return _can_cast(dtype_from, dtype_to, True, True, casting=casting)
- - -
[docs]def result_type(*arrays_and_dtypes): - """ - result_type(*arrays_and_dtypes) - - Returns the dtype that results from applying the Type Promotion Rules to \ - the arguments. - - Args: - arrays_and_dtypes (Union[usm_ndarray, dtype]): - An arbitrary length sequence of usm_ndarray objects or dtypes. - - Returns: - dtype: - The dtype resulting from an operation involving the - input arrays and dtypes. - """ - dtypes = [] - devices = [] - weak_dtypes = [] - for arg_i in arrays_and_dtypes: - if isinstance(arg_i, dpt.usm_ndarray): - devices.append(arg_i.sycl_device) - dtypes.append(arg_i.dtype) - elif isinstance(arg_i, int): - weak_dtypes.append(WeakIntegralType(arg_i)) - elif isinstance(arg_i, float): - weak_dtypes.append(WeakFloatingType(arg_i)) - elif isinstance(arg_i, complex): - weak_dtypes.append(WeakComplexType(arg_i)) - elif isinstance(arg_i, bool): - weak_dtypes.append(WeakBooleanType(arg_i)) - else: - dt = dpt.dtype(arg_i) - _supported_dtype([dt]) - dtypes.append(dt) - - has_fp16 = True - has_fp64 = True - target_dev = None - if devices: - inspected = False - for d in devices: - if inspected: - unsame_fp16_support = d.has_aspect_fp16 != has_fp16 - unsame_fp64_support = d.has_aspect_fp64 != has_fp64 - if unsame_fp16_support or unsame_fp64_support: - raise ValueError( - "Input arrays reside on devices " - "with different device supports; " - "unable to determine which " - "device-specific type promotion rules " - "to use." - ) - else: - has_fp16 = d.has_aspect_fp16 - has_fp64 = d.has_aspect_fp64 - target_dev = d - inspected = True - - if not dtypes and weak_dtypes: - dtypes.append(weak_dtypes[0].get()) - - if not (has_fp16 and has_fp64): - for dt in dtypes: - if not _dtype_supported_by_device_impl(dt, has_fp16, has_fp64): - raise ValueError( - f"Argument {dt} is not supported by the device" - ) - res_dt = np.result_type(*dtypes) - res_dt = _to_device_supported_dtype_impl(res_dt, has_fp16, has_fp64) - for wdt in weak_dtypes: - pair = _resolve_weak_types(wdt, res_dt, target_dev) - res_dt = np.result_type(*pair) - res_dt = _to_device_supported_dtype_impl(res_dt, has_fp16, has_fp64) - else: - res_dt = np.result_type(*dtypes) - if weak_dtypes: - weak_dt_obj = [wdt.get() for wdt in weak_dtypes] - res_dt = np.result_type(res_dt, *weak_dt_obj) - - return res_dt
- - -
[docs]def iinfo(dtype, /): - """iinfo(dtype) - - Returns machine limits for integer data types. - - Args: - dtype (dtype, usm_ndarray): - integer dtype or - an array with integer dtype. - - Returns: - iinfo_object: - An object with the following attributes: - - * bits: int - number of bits occupied by the data type - * max: int - largest representable number. - * min: int - smallest representable number. - * dtype: dtype - integer data type. - """ - if isinstance(dtype, dpt.usm_ndarray): - dtype = dtype.dtype - _supported_dtype([dpt.dtype(dtype)]) - return np.iinfo(dtype)
- - -
[docs]def finfo(dtype, /): - """finfo(type) - - Returns machine limits for floating-point data types. - - Args: - dtype (dtype, usm_ndarray): floating-point dtype or - an array with floating point data type. - If complex, the information is about its component - data type. - - Returns: - finfo_object: - an object have the following attributes: - - * bits: int - number of bits occupied by dtype. - * eps: float - difference between 1.0 and the next smallest representable - real-valued floating-point number larger than 1.0 according - to the IEEE-754 standard. - * max: float - largest representable real-valued number. - * min: float - smallest representable real-valued number. - * smallest_normal: float - smallest positive real-valued floating-point number with - full precision. - * dtype: dtype - real-valued floating-point data type. - - """ - if isinstance(dtype, dpt.usm_ndarray): - dtype = dtype.dtype - _supported_dtype([dpt.dtype(dtype)]) - return finfo_object(dtype)
- - -def _supported_dtype(dtypes): - for dtype in dtypes: - if dtype.char not in "?bBhHiIlLqQefdFD": - raise ValueError(f"Dpctl doesn't support dtype {dtype}.") - return True - - -
[docs]def isdtype(dtype, kind): - """isdtype(dtype, kind) - - Returns a boolean indicating whether a provided `dtype` is - of a specified data type `kind`. - - See [array API](array_api) for more information. - - [array_api]: https://data-apis.org/array-api/latest/ - """ - - if not isinstance(dtype, np.dtype): - raise TypeError(f"Expected instance of `dpt.dtype`, got {dtype}") - - if isinstance(kind, np.dtype): - return dtype == kind - - elif isinstance(kind, str): - if kind == "bool": - return dtype == np.dtype("bool") - elif kind == "signed integer": - return dtype.kind == "i" - elif kind == "unsigned integer": - return dtype.kind == "u" - elif kind == "integral": - return dtype.kind in "iu" - elif kind == "real floating": - return dtype.kind == "f" - elif kind == "complex floating": - return dtype.kind == "c" - elif kind == "numeric": - return dtype.kind in "iufc" - else: - raise ValueError(f"Unrecognized data type kind: {kind}") - - elif isinstance(kind, tuple): - return any(isdtype(dtype, k) for k in kind) - - else: - raise TypeError(f"Unsupported data type kind: {kind}")
- - -def _default_accumulation_dtype(inp_dt, q): - """Gives default output data type for given input data - type `inp_dt` when accumulation is performed on queue `q` - """ - inp_kind = inp_dt.kind - if inp_kind in "bi": - res_dt = dpt.dtype(ti.default_device_int_type(q)) - if inp_dt.itemsize > res_dt.itemsize: - res_dt = inp_dt - elif inp_kind in "u": - res_dt = dpt.dtype(ti.default_device_uint_type(q)) - res_ii = dpt.iinfo(res_dt) - inp_ii = dpt.iinfo(inp_dt) - if inp_ii.min >= res_ii.min and inp_ii.max <= res_ii.max: - pass - else: - res_dt = inp_dt - elif inp_kind in "fc": - res_dt = inp_dt - - return res_dt - - -def _default_accumulation_dtype_fp_types(inp_dt, q): - """Gives default output data type for given input data - type `inp_dt` when accumulation is performed on queue `q` - and the accumulation supports only floating-point data types - """ - inp_kind = inp_dt.kind - if inp_kind in "biu": - res_dt = dpt.dtype(ti.default_device_fp_type(q)) - can_cast_v = dpt.can_cast(inp_dt, res_dt) - if not can_cast_v: - _fp64 = q.sycl_device.has_aspect_fp64 - res_dt = dpt.float64 if _fp64 else dpt.float32 - elif inp_kind in "f": - res_dt = inp_dt - elif inp_kind in "c": - raise ValueError("function not defined for complex types") - - return res_dt - - -__all__ = [ - "_find_buf_dtype", - "_find_buf_dtype2", - "_to_device_supported_dtype", - "_acceptance_fn_default_unary", - "_acceptance_fn_reciprocal", - "_acceptance_fn_default_binary", - "_acceptance_fn_divide", - "_acceptance_fn_negative", - "_acceptance_fn_subtract", - "_resolve_one_strong_one_weak_types", - "_resolve_one_strong_two_weak_types", - "_resolve_weak_types", - "_resolve_weak_types_all_py_ints", - "_weak_type_num_kind", - "_strong_dtype_num_kind", - "can_cast", - "finfo", - "iinfo", - "isdtype", - "result_type", - "WeakBooleanType", - "WeakIntegralType", - "WeakFloatingType", - "WeakComplexType", - "_default_accumulation_dtype", - "_default_accumulation_dtype_fp_types", - "_find_buf_dtype_in_place_op", -] -
-
-
-
- - -
-
- - Made with Sphinx and @pradyunsg's - - Furo - -
-
- -
-
- -
-
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/pulls/1961/_modules/dpctl/tensor/_utility_functions.html b/pulls/1961/_modules/dpctl/tensor/_utility_functions.html deleted file mode 100644 index 95e162d538..0000000000 --- a/pulls/1961/_modules/dpctl/tensor/_utility_functions.html +++ /dev/null @@ -1,1310 +0,0 @@ - - - - - - - - - - - - dpctl.tensor._utility_functions - Data Parallel Control (dpctl) 0.19.0dev0 documentation - - - - - - - - - - - - - - - - - - - Contents - - - - - - Menu - - - - - - - - Expand - - - - - - Light mode - - - - - - - - - - - - - - Dark mode - - - - - - - Auto light/dark, in light mode - - - - - - - - - - - - - - - Auto light/dark, in dark mode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Skip to content - - - -
-
-
- -
- -
-
- -
- -
-
- -
-
-
- - - - - Back to top - -
-
- -
- -
-
-

Source code for dpctl.tensor._utility_functions

-#                       Data Parallel Control (dpctl)
-#
-#  Copyright 2020-2025 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.
-
-import builtins
-import operator
-
-import dpctl.tensor as dpt
-import dpctl.tensor._tensor_impl as ti
-import dpctl.tensor._tensor_reductions_impl as tri
-import dpctl.utils as du
-from dpctl.tensor._elementwise_common import (
-    _get_dtype,
-    _get_queue_usm_type,
-    _get_shape,
-    _validate_dtype,
-)
-
-from ._numpy_helper import normalize_axis_index, normalize_axis_tuple
-from ._type_utils import (
-    _resolve_one_strong_one_weak_types,
-    _resolve_one_strong_two_weak_types,
-)
-
-
-def _boolean_reduction(x, axis, keepdims, func):
-    if not isinstance(x, dpt.usm_ndarray):
-        raise TypeError(f"Expected dpctl.tensor.usm_ndarray, got {type(x)}")
-
-    nd = x.ndim
-    if axis is None:
-        red_nd = nd
-        # case of a scalar
-        if red_nd == 0:
-            return dpt.astype(x, dpt.bool)
-        x_tmp = x
-        res_shape = tuple()
-        perm = list(range(nd))
-    else:
-        if not isinstance(axis, (tuple, list)):
-            axis = (axis,)
-        axis = normalize_axis_tuple(axis, nd, "axis")
-
-        red_nd = len(axis)
-        # check for axis=()
-        if red_nd == 0:
-            return dpt.astype(x, dpt.bool)
-        perm = [i for i in range(nd) if i not in axis] + list(axis)
-        x_tmp = dpt.permute_dims(x, perm)
-        res_shape = x_tmp.shape[: nd - red_nd]
-
-    exec_q = x.sycl_queue
-    res_usm_type = x.usm_type
-
-    _manager = du.SequentialOrderManager[exec_q]
-    dep_evs = _manager.submitted_events
-    # always allocate the temporary as
-    # int32 and usm-device  to ensure that atomic updates
-    # are supported
-    res_tmp = dpt.empty(
-        res_shape,
-        dtype=dpt.int32,
-        usm_type="device",
-        sycl_queue=exec_q,
-    )
-    hev0, ev0 = func(
-        src=x_tmp,
-        trailing_dims_to_reduce=red_nd,
-        dst=res_tmp,
-        sycl_queue=exec_q,
-        depends=dep_evs,
-    )
-    _manager.add_event_pair(hev0, ev0)
-
-    # copy to boolean result array
-    res = dpt.empty(
-        res_shape,
-        dtype=dpt.bool,
-        usm_type=res_usm_type,
-        sycl_queue=exec_q,
-    )
-    hev1, ev1 = ti._copy_usm_ndarray_into_usm_ndarray(
-        src=res_tmp, dst=res, sycl_queue=exec_q, depends=[ev0]
-    )
-    _manager.add_event_pair(hev1, ev1)
-
-    if keepdims:
-        res_shape = res_shape + (1,) * red_nd
-        inv_perm = sorted(range(nd), key=lambda d: perm[d])
-        res = dpt.permute_dims(dpt.reshape(res, res_shape), inv_perm)
-    return res
-
-
-
[docs]def all(x, /, *, axis=None, keepdims=False): - """ - all(x, axis=None, keepdims=False) - - Tests whether all input array elements evaluate to True along a given axis. - - Args: - x (usm_ndarray): Input array. - axis (Optional[Union[int, Tuple[int,...]]]): Axis (or axes) - along which to perform a logical AND reduction. - When `axis` is `None`, a logical AND reduction - is performed over all dimensions of `x`. - If `axis` is negative, the axis is counted from - the last dimension to the first. - Default: `None`. - keepdims (bool, optional): If `True`, the reduced axes are included - in the result as singleton dimensions, and the result is - broadcastable to the input array shape. - If `False`, the reduced axes are not included in the result. - Default: `False`. - - Returns: - usm_ndarray: - An array with a data type of `bool` - containing the results of the logical AND reduction. - """ - return _boolean_reduction(x, axis, keepdims, tri._all)
- - -
[docs]def any(x, /, *, axis=None, keepdims=False): - """ - any(x, axis=None, keepdims=False) - - Tests whether any input array elements evaluate to True along a given axis. - - Args: - x (usm_ndarray): Input array. - axis (Optional[Union[int, Tuple[int,...]]]): Axis (or axes) - along which to perform a logical OR reduction. - When `axis` is `None`, a logical OR reduction - is performed over all dimensions of `x`. - If `axis` is negative, the axis is counted from - the last dimension to the first. - Default: `None`. - keepdims (bool, optional): If `True`, the reduced axes are included - in the result as singleton dimensions, and the result is - broadcastable to the input array shape. - If `False`, the reduced axes are not included in the result. - Default: `False`. - - Returns: - usm_ndarray: - An array with a data type of `bool` - containing the results of the logical OR reduction. - """ - return _boolean_reduction(x, axis, keepdims, tri._any)
- - -def _validate_diff_shape(sh1, sh2, axis): - """Utility for validating that two shapes `sh1` and `sh2` - are possible to concatenate along `axis`.""" - if not sh2: - # scalars will always be accepted - return True - else: - sh1_ndim = len(sh1) - if sh1_ndim == len(sh2) and builtins.all( - sh1[i] == sh2[i] for i in range(sh1_ndim) if i != axis - ): - return True - else: - return False - - -def _concat_diff_input(arr, axis, prepend, append): - """ - Concatenates `arr`, `prepend` and, `append` along `axis`, - where `arr` is an array and `prepend` and `append` are - any mixture of arrays and scalars. - """ - if prepend is not None and append is not None: - q1, x_usm_type = arr.sycl_queue, arr.usm_type - q2, prepend_usm_type = _get_queue_usm_type(prepend) - q3, append_usm_type = _get_queue_usm_type(append) - if q2 is None and q3 is None: - exec_q = q1 - coerced_usm_type = x_usm_type - elif q3 is None: - exec_q = du.get_execution_queue((q1, q2)) - if exec_q is None: - raise du.ExecutionPlacementError( - "Execution placement can not be unambiguously inferred " - "from input arguments." - ) - coerced_usm_type = du.get_coerced_usm_type( - ( - x_usm_type, - prepend_usm_type, - ) - ) - elif q2 is None: - exec_q = du.get_execution_queue((q1, q3)) - if exec_q is None: - raise du.ExecutionPlacementError( - "Execution placement can not be unambiguously inferred " - "from input arguments." - ) - coerced_usm_type = du.get_coerced_usm_type( - ( - x_usm_type, - append_usm_type, - ) - ) - else: - exec_q = du.get_execution_queue((q1, q2, q3)) - if exec_q is None: - raise du.ExecutionPlacementError( - "Execution placement can not be unambiguously inferred " - "from input arguments." - ) - coerced_usm_type = du.get_coerced_usm_type( - ( - x_usm_type, - prepend_usm_type, - append_usm_type, - ) - ) - du.validate_usm_type(coerced_usm_type, allow_none=False) - arr_shape = arr.shape - prepend_shape = _get_shape(prepend) - append_shape = _get_shape(append) - if not builtins.all( - isinstance(s, (tuple, list)) - for s in ( - prepend_shape, - append_shape, - ) - ): - raise TypeError( - "Shape of arguments can not be inferred. " - "Arguments are expected to be " - "lists, tuples, or both" - ) - valid_prepend_shape = _validate_diff_shape( - arr_shape, prepend_shape, axis - ) - if not valid_prepend_shape: - raise ValueError( - f"`diff` argument `prepend` with shape {prepend_shape} is " - f"invalid for first input with shape {arr_shape}" - ) - valid_append_shape = _validate_diff_shape(arr_shape, append_shape, axis) - if not valid_append_shape: - raise ValueError( - f"`diff` argument `append` with shape {append_shape} is invalid" - f" for first input with shape {arr_shape}" - ) - sycl_dev = exec_q.sycl_device - arr_dtype = arr.dtype - prepend_dtype = _get_dtype(prepend, sycl_dev) - append_dtype = _get_dtype(append, sycl_dev) - if not builtins.all( - _validate_dtype(o) for o in (prepend_dtype, append_dtype) - ): - raise ValueError("Operands have unsupported data types") - prepend_dtype, append_dtype = _resolve_one_strong_two_weak_types( - arr_dtype, prepend_dtype, append_dtype, sycl_dev - ) - if isinstance(prepend, dpt.usm_ndarray): - a_prepend = prepend - else: - a_prepend = dpt.asarray( - prepend, - dtype=prepend_dtype, - usm_type=coerced_usm_type, - sycl_queue=exec_q, - ) - if isinstance(append, dpt.usm_ndarray): - a_append = append - else: - a_append = dpt.asarray( - append, - dtype=append_dtype, - usm_type=coerced_usm_type, - sycl_queue=exec_q, - ) - if not prepend_shape: - prepend_shape = arr_shape[:axis] + (1,) + arr_shape[axis + 1 :] - a_prepend = dpt.broadcast_to(a_prepend, prepend_shape) - if not append_shape: - append_shape = arr_shape[:axis] + (1,) + arr_shape[axis + 1 :] - a_append = dpt.broadcast_to(a_append, append_shape) - return dpt.concat((a_prepend, arr, a_append), axis=axis) - elif prepend is not None: - q1, x_usm_type = arr.sycl_queue, arr.usm_type - q2, prepend_usm_type = _get_queue_usm_type(prepend) - if q2 is None: - exec_q = q1 - coerced_usm_type = x_usm_type - else: - exec_q = du.get_execution_queue((q1, q2)) - if exec_q is None: - raise du.ExecutionPlacementError( - "Execution placement can not be unambiguously inferred " - "from input arguments." - ) - coerced_usm_type = du.get_coerced_usm_type( - ( - x_usm_type, - prepend_usm_type, - ) - ) - du.validate_usm_type(coerced_usm_type, allow_none=False) - arr_shape = arr.shape - prepend_shape = _get_shape(prepend) - if not isinstance(prepend_shape, (tuple, list)): - raise TypeError( - "Shape of argument can not be inferred. " - "Argument is expected to be a " - "list or tuple" - ) - valid_prepend_shape = _validate_diff_shape( - arr_shape, prepend_shape, axis - ) - if not valid_prepend_shape: - raise ValueError( - f"`diff` argument `prepend` with shape {prepend_shape} is " - f"invalid for first input with shape {arr_shape}" - ) - sycl_dev = exec_q.sycl_device - arr_dtype = arr.dtype - prepend_dtype = _get_dtype(prepend, sycl_dev) - if not _validate_dtype(prepend_dtype): - raise ValueError("Operand has unsupported data type") - prepend_dtype = _resolve_one_strong_one_weak_types( - arr_dtype, prepend_dtype, sycl_dev - ) - if isinstance(prepend, dpt.usm_ndarray): - a_prepend = prepend - else: - a_prepend = dpt.asarray( - prepend, - dtype=prepend_dtype, - usm_type=coerced_usm_type, - sycl_queue=exec_q, - ) - if not prepend_shape: - prepend_shape = arr_shape[:axis] + (1,) + arr_shape[axis + 1 :] - a_prepend = dpt.broadcast_to(a_prepend, prepend_shape) - return dpt.concat((a_prepend, arr), axis=axis) - elif append is not None: - q1, x_usm_type = arr.sycl_queue, arr.usm_type - q2, append_usm_type = _get_queue_usm_type(append) - if q2 is None: - exec_q = q1 - coerced_usm_type = x_usm_type - else: - exec_q = du.get_execution_queue((q1, q2)) - if exec_q is None: - raise du.ExecutionPlacementError( - "Execution placement can not be unambiguously inferred " - "from input arguments." - ) - coerced_usm_type = du.get_coerced_usm_type( - ( - x_usm_type, - append_usm_type, - ) - ) - du.validate_usm_type(coerced_usm_type, allow_none=False) - arr_shape = arr.shape - append_shape = _get_shape(append) - if not isinstance(append_shape, (tuple, list)): - raise TypeError( - "Shape of argument can not be inferred. " - "Argument is expected to be a " - "list or tuple" - ) - valid_append_shape = _validate_diff_shape(arr_shape, append_shape, axis) - if not valid_append_shape: - raise ValueError( - f"`diff` argument `append` with shape {append_shape} is invalid" - f" for first input with shape {arr_shape}" - ) - sycl_dev = exec_q.sycl_device - arr_dtype = arr.dtype - append_dtype = _get_dtype(append, sycl_dev) - if not _validate_dtype(append_dtype): - raise ValueError("Operand has unsupported data type") - append_dtype = _resolve_one_strong_one_weak_types( - arr_dtype, append_dtype, sycl_dev - ) - if isinstance(append, dpt.usm_ndarray): - a_append = append - else: - a_append = dpt.asarray( - append, - dtype=append_dtype, - usm_type=coerced_usm_type, - sycl_queue=exec_q, - ) - if not append_shape: - append_shape = arr_shape[:axis] + (1,) + arr_shape[axis + 1 :] - a_append = dpt.broadcast_to(a_append, append_shape) - return dpt.concat((arr, a_append), axis=axis) - else: - arr1 = arr - return arr1 - - -
[docs]def diff(x, /, *, axis=-1, n=1, prepend=None, append=None): - """ - Calculates the `n`-th discrete forward difference of `x` along `axis`. - - Args: - x (usm_ndarray): - input array. - axis (int): - axis along which to compute the difference. A valid axis must be on - the interval `[-N, N)`, where `N` is the rank (number of - dimensions) of `x`. - Default: `-1` - n (int): - number of times to recursively compute the difference. - Default: `1`. - prepend (Union[usm_ndarray, bool, int, float, complex]): - value or values to prepend to the specified axis before taking the - difference. - Must have the same shape as `x` except along `axis`, which can have - any shape. - Default: `None`. - append (Union[usm_ndarray, bool, int, float, complex]): - value or values to append to the specified axis before taking the - difference. - Must have the same shape as `x` except along `axis`, which can have - any shape. - Default: `None`. - - Returns: - usm_ndarray: - an array containing the `n`-th differences. The array will have the - same shape as `x`, except along `axis`, which will have shape: - ``prepend.shape[axis] + x.shape[axis] + append.shape[axis] - n`` - - The data type of the returned array is determined by the Type - Promotion Rules. - """ - - if not isinstance(x, dpt.usm_ndarray): - raise TypeError( - "Expecting dpctl.tensor.usm_ndarray type, " f"got {type(x)}" - ) - x_nd = x.ndim - axis = normalize_axis_index(operator.index(axis), x_nd) - n = operator.index(n) - if n < 0: - raise ValueError(f"`n` must be positive, got {n}") - arr = _concat_diff_input(x, axis, prepend, append) - if n == 0: - return arr - # form slices and recurse - sl0 = tuple( - slice(None) if i != axis else slice(1, None) for i in range(x_nd) - ) - sl1 = tuple( - slice(None) if i != axis else slice(None, -1) for i in range(x_nd) - ) - - diff_op = dpt.not_equal if x.dtype == dpt.bool else dpt.subtract - if n > 1: - arr_tmp0 = diff_op(arr[sl0], arr[sl1]) - arr_tmp1 = diff_op(arr_tmp0[sl0], arr_tmp0[sl1]) - n = n - 2 - if n > 0: - sl3 = tuple( - slice(None) if i != axis else slice(None, -2) - for i in range(x_nd) - ) - for _ in range(n): - arr_tmp0_sliced = arr_tmp0[sl3] - diff_op(arr_tmp1[sl0], arr_tmp1[sl1], out=arr_tmp0_sliced) - arr_tmp0, arr_tmp1 = arr_tmp1, arr_tmp0_sliced - arr = arr_tmp1 - else: - arr = diff_op(arr[sl0], arr[sl1]) - return arr
-
-
-
-
- - -
-
- - Made with Sphinx and @pradyunsg's - - Furo - -
-
- -
-
- -
-
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/pulls/1961/_modules/dpctl/utils/_intel_device_info.html b/pulls/1961/_modules/dpctl/utils/_intel_device_info.html deleted file mode 100644 index fe72bbf6bd..0000000000 --- a/pulls/1961/_modules/dpctl/utils/_intel_device_info.html +++ /dev/null @@ -1,932 +0,0 @@ - - - - - - - - - - - - dpctl.utils._intel_device_info - Data Parallel Control (dpctl) 0.19.0dev0 documentation - - - - - - - - - - - - - - - - - - - Contents - - - - - - Menu - - - - - - - - Expand - - - - - - Light mode - - - - - - - - - - - - - - Dark mode - - - - - - - Auto light/dark, in light mode - - - - - - - - - - - - - - - Auto light/dark, in dark mode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Skip to content - - - -
-
-
- -
- -
-
- -
- -
-
- -
-
-
- - - - - Back to top - -
-
- -
- -
-
-

Source code for dpctl.utils._intel_device_info

-#                      Data Parallel Control (dpctl)
-#
-# Copyright 2020-2025 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.
-
-from .._sycl_device import SyclDevice
-from ._device_queries import (
-    intel_device_info_device_id,
-    intel_device_info_free_memory,
-    intel_device_info_gpu_eu_count,
-    intel_device_info_gpu_eu_count_per_subslice,
-    intel_device_info_gpu_eu_simd_width,
-    intel_device_info_gpu_hw_threads_per_eu,
-    intel_device_info_gpu_slices,
-    intel_device_info_gpu_subslices_per_slice,
-    intel_device_info_max_mem_bandwidth,
-    intel_device_info_memory_bus_width,
-    intel_device_info_memory_clock_rate,
-)
-
-
-
[docs]def intel_device_info(dev, /): - """intel_device_info(sycl_device) - - For Intel(R) GPU devices returns a dictionary - with device architectural details, and an empty - dictionary otherwise. The dictionary contains - the following keys: - - device_id: - 32-bits device PCI identifier - gpu_eu_count: - Total number of execution units - gpu_hw_threads_per_eu: - Number of thread contexts in EU - gpu_eu_simd_width: - Physical SIMD width of EU - gpu_slices: - Total number of slices - gpu_subslices_per_slice: - Number of sub-slices per slice - gpu_eu_count_per_subslice: - Number of EUs in subslice - max_mem_bandwidth: - Maximum memory bandwidth in bytes/second - free_memory: - Global memory available on the device in units of bytes - - Unsupported descriptors are omitted from the dictionary. - - Descriptors other than the PCI identifier are supported only - for :class:`.SyclDevices` with Level-Zero backend. - - .. note:: - Environment variable ``ZES_ENABLE_SYSMAN`` may need to be set - to ``1`` for the ``"free_memory"`` key to be reported. - """ - if not isinstance(dev, SyclDevice): - raise TypeError(f"Expected dpctl.SyclDevice, got {type(dev)}") - dev_id = intel_device_info_device_id(dev) - if dev_id: - res = { - "device_id": dev_id, - } - if dev.has_aspect_gpu: - eu_count = intel_device_info_gpu_eu_count(dev) - if eu_count: - res["gpu_eu_count"] = eu_count - hw_threads = intel_device_info_gpu_hw_threads_per_eu(dev) - if hw_threads: - res["gpu_hw_threads_per_eu"] = hw_threads - simd_w = intel_device_info_gpu_eu_simd_width(dev) - if simd_w: - res["gpu_eu_simd_width"] = simd_w - n_slices = intel_device_info_gpu_slices(dev) - if n_slices: - res["gpu_slices"] = n_slices - n_subslices = intel_device_info_gpu_subslices_per_slice(dev) - if n_subslices: - res["gpu_subslices_per_slice"] = n_subslices - n_eu_per_subslice = intel_device_info_gpu_eu_count_per_subslice(dev) - if n_eu_per_subslice: - res["gpu_eu_count_per_subslice"] = n_eu_per_subslice - bw = intel_device_info_max_mem_bandwidth(dev) - if bw: - res["max_mem_bandwidth"] = bw - fm = intel_device_info_free_memory(dev) - if fm: - res["free_memory"] = fm - mcr = intel_device_info_memory_clock_rate(dev) - if mcr: - res["memory_clock_rate"] = mcr - mbw = intel_device_info_memory_bus_width(dev) - if mbw: - res["memory_bus_width"] = mbw - return res - return dict()
- - -__all__ = [ - "intel_device_info", -] -
-
-
-
- - -
-
- - Made with Sphinx and @pradyunsg's - - Furo - -
-
- -
-
- -
-
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/pulls/1961/_modules/dpctl/utils/_onetrace_context.html b/pulls/1961/_modules/dpctl/utils/_onetrace_context.html deleted file mode 100644 index a7a3b3593b..0000000000 --- a/pulls/1961/_modules/dpctl/utils/_onetrace_context.html +++ /dev/null @@ -1,915 +0,0 @@ - - - - - - - - - - - - dpctl.utils._onetrace_context - Data Parallel Control (dpctl) 0.19.0dev0 documentation - - - - - - - - - - - - - - - - - - - Contents - - - - - - Menu - - - - - - - - Expand - - - - - - Light mode - - - - - - - - - - - - - - Dark mode - - - - - - - Auto light/dark, in light mode - - - - - - - - - - - - - - - Auto light/dark, in dark mode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Skip to content - - - -
-
-
- -
- -
-
- -
- -
-
- -
-
-
- - - - - Back to top - -
-
- -
- -
-
-

Source code for dpctl.utils._onetrace_context

-#                      Data Parallel Control (dpctl)
-#
-# Copyright 2020-2025 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.
-
-from contextlib import contextmanager
-from os import environ, getenv
-from platform import system as sys_platform
-
-__doc__ = (
-    "Implementation module of :class:`dpctl.utils.onetrace_enabled` "
-    "context manager."
-)
-
-_UNCHECKED = sys_platform() == "Linux"
-del sys_platform
-
-
-
[docs]@contextmanager -def onetrace_enabled(): - """Enable ``onetrace`` collection for kernels executed in this context. - - .. note:: - Proper working of this utility assumes that Python interpreter - has been launched by ``onetrace`` or ``unitrace`` tool from project - `intel/pti-gpu <https://github.com/intel/pti-gpu>`_. - - :Example: - Launch the Python interpreter using `onetrace` tool: - - .. code-block:: bash - - $ onetrace --conditional-collection -v -t --demangle python app.py - - Now using the context manager in the Python sessions enables - data collection and its output for every offloaded kernel: - - .. code-block:: python - - import dpctl.tensor as dpt - from dpctl.utils import onetrace_enabled - - # onetrace output reporting on execution of the kernel - # should be seen, starting with "Device Timeline" - with onetrace_enabled(): - a = dpt.arange(100, dtype='int16') - - Sample output: - - .. code-block:: text - - >>> with onetrace_enabled(): - ... a = dpt.arange(100, dtype='int16') - ... - Device Timeline (queue: 0x555aee86bed0): dpctl::tensor::kernels::constructors::linear_sequence_step_kernel<short>[SIMD32 {1; 1; 1} {100; 1; 1}]<1.1> [ns] = 44034325658 (append) 44034816544 (submit) 44036296752 (start) 44036305918 (end) - >>> - """ - global _UNCHECKED - - if _UNCHECKED: - _UNCHECKED = False - if not ( - getenv("PTI_ENABLE", None) == "1" - and "onetrace_tool" in getenv("LD_PRELOAD", "") - ): - import warnings - - warnings.warn( - "It looks like Python interpreter was not started using " - "`onetrace` utility. Using `onetrace_enabled` may have " - "no effect. See `onetrace_enabled.__doc__` for usage.", - RuntimeWarning, - stacklevel=2, - ) - - _env_var_name = "PTI_ENABLE_COLLECTION" - saved = getenv(_env_var_name, None) - try: - environ[_env_var_name] = "1" - yield - finally: - if saved is None: - del environ[_env_var_name] - else: - environ[_env_var_name] = saved
-
-
-
-
- - -
-
- - Made with Sphinx and @pradyunsg's - - Furo - -
-
- -
-
- -
-
- -
-
- - - - - - - - - \ No newline at end of file diff --git a/pulls/1961/_modules/index.html b/pulls/1961/_modules/index.html deleted file mode 100644 index b28abaa201..0000000000 --- a/pulls/1961/_modules/index.html +++ /dev/null @@ -1,854 +0,0 @@ - - - - - - - - - - - - Overview: module code - Data Parallel Control (dpctl) 0.19.0dev0 documentation - - - - - - - - - - - - - - - - - - - Contents - - - - - - Menu - - - - - - - - Expand - - - - - - Light mode - - - - - - - - - - - - - - Dark mode - - - - - - - Auto light/dark, in light mode - - - - - - - - - - - - - - - Auto light/dark, in dark mode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Skip to content - - - -
-
-
- -
- -
-
- -
- -
-
- - -
- - - - - - - - - \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/examples/usm_ndarray.rst.txt b/pulls/1961/_sources/api_reference/dpctl/examples/usm_ndarray.rst.txt deleted file mode 100644 index f4dc7f4824..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/examples/usm_ndarray.rst.txt +++ /dev/null @@ -1,34 +0,0 @@ -.. rubric:: Use :meth:`usm_ndarray.to_device` to migrate array to different device - -.. code-block:: python - :caption: Migrate array to a different device - - from dpctl import tensor - - a = tensor.zeros(100, device="cpu") - b = a.to_device("gpu") - - -.. rubric:: Use :meth:`usm_ndarray.device` to specify placement of new array - -.. code-block:: python - :caption: Create a USM-device empty array on the same device as another array - - from dpctl import tensor - - d = tensor.eye(100) - u = tensor.full(d.shape, fill_value=0.5, usm_type="device", device=d.device) - -.. rubric:: Use :meth:`usm_ndarray.mT` to transpose matrices in a array thought of as a stack of matrices - -.. code-block:: python - :caption: Transpose an array - - from dpctl import tensor - - # create stack of matrices - proto = tensor.asarray([[2, 1], [3, 4]]) - ar = tensor.tile(proto, (5, 10, 10)) - - # transpose each matrix in the stack - arT = ar.mT diff --git a/pulls/1961/_sources/api_reference/dpctl/filter_selector_string.rst.txt b/pulls/1961/_sources/api_reference/dpctl/filter_selector_string.rst.txt deleted file mode 100644 index bf46322e9b..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/filter_selector_string.rst.txt +++ /dev/null @@ -1,54 +0,0 @@ -.. _filter_selector_string: - -Filter Selector String -====================== - -Filter selector string is a way to refer to unpartitioned SYCL devices -proposed in :oneapi_filter_selection:`sycl_ext_oneapi_filter_selector <>` -extension to SYCL standard. - -This document captures aspects of the referenced document relevant -to :mod:`dpctl`. - -A filter selector string defines one or more filters, which must be -separated using ``","`` character. A filter is specified as a -triple of the form: - -.. code-block:: text - - Backend:DeviceType:RelativeDeviceNumber - -Every element of the triple is optional, but a filter must contain at -least one component. - -``Backend`` specifies the desired backend of targeted devices, while -``DeviceType`` specifies the type of targeted devices. -``RelativeDeviceNumber`` refers to the number of the device that matches -any other given requirements, starting from `0` to marking the -"first device that matches the requirements". - -Attempting to use a non-conforming string in places where filter selector -string is expected will raise an exception. - -Supported values for ``Backend`` are: - -.. list-table:: - - * - cuda - - opencl - - level_zero - - hip - -Supported values for ``DeviceType`` are: - -.. list-table:: - - * - accelerator - - cpu - - gpu - -Filter selector strings can be used as arguments to constructors of -:py:class:`dpctl.SyclDevice`, :py:class:`dpctl.SyclContext`, -:py:class:`dpctl.SyclPlatform`, :py:class:`dpctl.SyclQueue`, -or :py:class:`dpctl.tensor.Device` classes, as well as values of -``device`` keyword in :ref:`array creation functions `. diff --git a/pulls/1961/_sources/api_reference/dpctl/flags.rst.txt b/pulls/1961/_sources/api_reference/dpctl/flags.rst.txt deleted file mode 100644 index d499b56d36..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/flags.rst.txt +++ /dev/null @@ -1,22 +0,0 @@ -.. _Flags_class: - -``Flags`` class -=================== - -.. autoclass:: dpctl.tensor._flags.Flags - :members: - - Note that dictionary-like access to some members is permitted: - - "C", "C_CONTIGUOUS": - Equivalent to ``c_contiguous`` - "F", "F_CONTIGUOUS": - Equivalent to ``f_contiguous`` - "W", "WRITABLE": - Equivalent to ``writable`` - "FC": - Equivalent to ``fc`` - "FNC": - Equivalent to ``fnc`` - "FORC", "CONTIGUOUS": - Equivalent to ``forc`` and ``contiguous`` diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.SyclContext.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.SyclContext.rst.txt deleted file mode 100644 index 0aaad38e7e..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.SyclContext.rst.txt +++ /dev/null @@ -1,29 +0,0 @@ -ο»Ώdpctl.SyclContext -================= - -.. currentmodule:: dpctl - -.. autoclass:: SyclContext - - - - .. rubric:: Methods - - .. autosummary:: - :toctree: generated - - ~SyclContext.addressof_ref - ~SyclContext.get_devices - - - - - - .. rubric:: Attributes - - .. autosummary:: - :toctree: generated - - ~SyclContext.device_count - - \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.SyclContextCreationError.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.SyclContextCreationError.rst.txt deleted file mode 100644 index 5aa277758c..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.SyclContextCreationError.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.SyclContextCreationError -============================== - -.. currentmodule:: dpctl - -.. autoexception:: SyclContextCreationError \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.SyclDevice.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.SyclDevice.rst.txt deleted file mode 100644 index 10ef862e15..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.SyclDevice.rst.txt +++ /dev/null @@ -1,101 +0,0 @@ -ο»Ώdpctl.SyclDevice -================ - -.. currentmodule:: dpctl - -.. autoclass:: SyclDevice - - - - .. rubric:: Methods - - .. autosummary:: - :toctree: generated - - ~SyclDevice.addressof_ref - ~SyclDevice.create_sub_devices - ~SyclDevice.get_filter_string - ~SyclDevice.print_device_info - - - - - - .. rubric:: Attributes - - .. autosummary:: - :toctree: generated - - ~SyclDevice.backend - ~SyclDevice.default_selector_score - ~SyclDevice.device_type - ~SyclDevice.driver_version - ~SyclDevice.filter_string - ~SyclDevice.global_mem_cache_line_size - ~SyclDevice.global_mem_cache_size - ~SyclDevice.global_mem_cache_type - ~SyclDevice.global_mem_size - ~SyclDevice.has_aspect_accelerator - ~SyclDevice.has_aspect_atomic64 - ~SyclDevice.has_aspect_cpu - ~SyclDevice.has_aspect_custom - ~SyclDevice.has_aspect_emulated - ~SyclDevice.has_aspect_fp16 - ~SyclDevice.has_aspect_fp64 - ~SyclDevice.has_aspect_gpu - ~SyclDevice.has_aspect_host_debuggable - ~SyclDevice.has_aspect_image - ~SyclDevice.has_aspect_online_compiler - ~SyclDevice.has_aspect_online_linker - ~SyclDevice.has_aspect_queue_profiling - ~SyclDevice.has_aspect_usm_atomic_host_allocations - ~SyclDevice.has_aspect_usm_atomic_shared_allocations - ~SyclDevice.has_aspect_usm_device_allocations - ~SyclDevice.has_aspect_usm_host_allocations - ~SyclDevice.has_aspect_usm_shared_allocations - ~SyclDevice.has_aspect_usm_system_allocations - ~SyclDevice.image_2d_max_height - ~SyclDevice.image_2d_max_width - ~SyclDevice.image_3d_max_depth - ~SyclDevice.image_3d_max_height - ~SyclDevice.image_3d_max_width - ~SyclDevice.is_accelerator - ~SyclDevice.is_cpu - ~SyclDevice.is_gpu - ~SyclDevice.local_mem_size - ~SyclDevice.max_clock_frequency - ~SyclDevice.max_compute_units - ~SyclDevice.max_mem_alloc_size - ~SyclDevice.max_num_sub_groups - ~SyclDevice.max_read_image_args - ~SyclDevice.max_work_group_size - ~SyclDevice.max_work_item_dims - ~SyclDevice.max_work_item_sizes - ~SyclDevice.max_work_item_sizes1d - ~SyclDevice.max_work_item_sizes2d - ~SyclDevice.max_work_item_sizes3d - ~SyclDevice.max_write_image_args - ~SyclDevice.name - ~SyclDevice.native_vector_width_char - ~SyclDevice.native_vector_width_double - ~SyclDevice.native_vector_width_float - ~SyclDevice.native_vector_width_half - ~SyclDevice.native_vector_width_int - ~SyclDevice.native_vector_width_long - ~SyclDevice.native_vector_width_short - ~SyclDevice.parent_device - ~SyclDevice.partition_max_sub_devices - ~SyclDevice.preferred_vector_width_char - ~SyclDevice.preferred_vector_width_double - ~SyclDevice.preferred_vector_width_float - ~SyclDevice.preferred_vector_width_half - ~SyclDevice.preferred_vector_width_int - ~SyclDevice.preferred_vector_width_long - ~SyclDevice.preferred_vector_width_short - ~SyclDevice.profiling_timer_resolution - ~SyclDevice.sub_group_independent_forward_progress - ~SyclDevice.sub_group_sizes - ~SyclDevice.sycl_platform - ~SyclDevice.vendor - - \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.SyclDeviceCreationError.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.SyclDeviceCreationError.rst.txt deleted file mode 100644 index 812c304c40..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.SyclDeviceCreationError.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.SyclDeviceCreationError -============================= - -.. currentmodule:: dpctl - -.. autoexception:: SyclDeviceCreationError \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.SyclEvent.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.SyclEvent.rst.txt deleted file mode 100644 index 586ed1e81e..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.SyclEvent.rst.txt +++ /dev/null @@ -1,35 +0,0 @@ -ο»Ώdpctl.SyclEvent -=============== - -.. currentmodule:: dpctl - -.. autoclass:: SyclEvent - - - - .. rubric:: Methods - - .. autosummary:: - :toctree: generated - - ~SyclEvent.addressof_ref - ~SyclEvent.get_wait_list - ~SyclEvent.wait - ~SyclEvent.wait_for - - - - - - .. rubric:: Attributes - - .. autosummary:: - :toctree: generated - - ~SyclEvent.backend - ~SyclEvent.execution_status - ~SyclEvent.profiling_info_end - ~SyclEvent.profiling_info_start - ~SyclEvent.profiling_info_submit - - \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.SyclPlatform.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.SyclPlatform.rst.txt deleted file mode 100644 index d26ccff3e7..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.SyclPlatform.rst.txt +++ /dev/null @@ -1,32 +0,0 @@ -ο»Ώdpctl.SyclPlatform -================== - -.. currentmodule:: dpctl - -.. autoclass:: SyclPlatform - - - - .. rubric:: Methods - - .. autosummary:: - :toctree: generated - - ~SyclPlatform.print_platform_info - - - - - - .. rubric:: Attributes - - .. autosummary:: - :toctree: generated - - ~SyclPlatform.backend - ~SyclPlatform.default_context - ~SyclPlatform.name - ~SyclPlatform.vendor - ~SyclPlatform.version - - \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.SyclQueue.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.SyclQueue.rst.txt deleted file mode 100644 index 5f0b7f6186..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.SyclQueue.rst.txt +++ /dev/null @@ -1,45 +0,0 @@ -ο»Ώdpctl.SyclQueue -=============== - -.. currentmodule:: dpctl - -.. autoclass:: SyclQueue - - - - .. rubric:: Methods - - .. autosummary:: - :toctree: generated - - ~SyclQueue.addressof_ref - ~SyclQueue.get_sycl_context - ~SyclQueue.get_sycl_device - ~SyclQueue.mem_advise - ~SyclQueue.memcpy - ~SyclQueue.memcpy_async - ~SyclQueue.prefetch - ~SyclQueue.print_device_info - ~SyclQueue.submit - ~SyclQueue.submit_async - ~SyclQueue.submit_barrier - ~SyclQueue.wait - - - - - - .. rubric:: Attributes - - .. autosummary:: - :toctree: generated - - ~SyclQueue.backend - ~SyclQueue.driver_version - ~SyclQueue.has_enable_profiling - ~SyclQueue.is_in_order - ~SyclQueue.name - ~SyclQueue.sycl_context - ~SyclQueue.sycl_device - - \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.SyclQueueCreationError.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.SyclQueueCreationError.rst.txt deleted file mode 100644 index 169adb6462..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.SyclQueueCreationError.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.SyclQueueCreationError -============================ - -.. currentmodule:: dpctl - -.. autoexception:: SyclQueueCreationError \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.SyclSubDeviceCreationError.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.SyclSubDeviceCreationError.rst.txt deleted file mode 100644 index 8aa149d61a..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.SyclSubDeviceCreationError.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.SyclSubDeviceCreationError -================================ - -.. currentmodule:: dpctl - -.. autoexception:: SyclSubDeviceCreationError \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.SyclTimer.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.SyclTimer.rst.txt deleted file mode 100644 index 84c98cd4e5..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.SyclTimer.rst.txt +++ /dev/null @@ -1,28 +0,0 @@ -ο»Ώdpctl.SyclTimer -=============== - -.. currentmodule:: dpctl - -.. autoclass:: SyclTimer - - - - .. rubric:: Methods - - .. autosummary:: - :toctree: generated - - ~SyclTimer.__init__ - - - - - - .. rubric:: Attributes - - .. autosummary:: - :toctree: generated - - ~SyclTimer.dt - - \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.get_devices.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.get_devices.rst.txt deleted file mode 100644 index baaad3cb91..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.get_devices.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.get\_devices -================== - -.. currentmodule:: dpctl - -.. autofunction:: get_devices \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.get_include.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.get_include.rst.txt deleted file mode 100644 index 88daa0405b..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.get_include.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.get\_include -================== - -.. currentmodule:: dpctl - -.. autofunction:: get_include \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.get_num_devices.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.get_num_devices.rst.txt deleted file mode 100644 index 2093e15c50..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.get_num_devices.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.get\_num\_devices -======================= - -.. currentmodule:: dpctl - -.. autofunction:: get_num_devices \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.has_accelerator_devices.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.has_accelerator_devices.rst.txt deleted file mode 100644 index f7a244d1d2..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.has_accelerator_devices.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.has\_accelerator\_devices -=============================== - -.. currentmodule:: dpctl - -.. autofunction:: has_accelerator_devices \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.has_cpu_devices.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.has_cpu_devices.rst.txt deleted file mode 100644 index b952ee2f57..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.has_cpu_devices.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.has\_cpu\_devices -======================= - -.. currentmodule:: dpctl - -.. autofunction:: has_cpu_devices \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.has_gpu_devices.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.has_gpu_devices.rst.txt deleted file mode 100644 index 5090a58290..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.has_gpu_devices.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.has\_gpu\_devices -======================= - -.. currentmodule:: dpctl - -.. autofunction:: has_gpu_devices \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.lsplatform.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.lsplatform.rst.txt deleted file mode 100644 index dbe3f549f2..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.lsplatform.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.lsplatform -================ - -.. currentmodule:: dpctl - -.. autofunction:: lsplatform \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.memory.MemoryUSMDevice.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.memory.MemoryUSMDevice.rst.txt deleted file mode 100644 index b957e12aa0..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.memory.MemoryUSMDevice.rst.txt +++ /dev/null @@ -1,43 +0,0 @@ -ο»Ώdpctl.memory.MemoryUSMDevice -============================ - -.. currentmodule:: dpctl.memory - - - -.. autoclass:: MemoryUSMDevice - - - - - .. rubric:: Methods - - .. autosummary:: - :toctree: generated - - ~MemoryUSMDevice.copy_from_device - ~MemoryUSMDevice.copy_from_host - ~MemoryUSMDevice.copy_to_host - ~MemoryUSMDevice.get_usm_type - ~MemoryUSMDevice.get_usm_type_enum - ~MemoryUSMDevice.memset - ~MemoryUSMDevice.tobytes - - - - - - .. rubric:: Attributes - - .. autosummary:: - :toctree: generated - - ~MemoryUSMDevice.nbytes - ~MemoryUSMDevice.reference_obj - ~MemoryUSMDevice.size - ~MemoryUSMDevice.sycl_context - ~MemoryUSMDevice.sycl_device - ~MemoryUSMDevice.sycl_queue - ~MemoryUSMDevice.__sycl_usm_array_interface__ - - \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.memory.MemoryUSMHost.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.memory.MemoryUSMHost.rst.txt deleted file mode 100644 index 59fe44efd2..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.memory.MemoryUSMHost.rst.txt +++ /dev/null @@ -1,43 +0,0 @@ -ο»Ώdpctl.memory.MemoryUSMHost -========================== - -.. currentmodule:: dpctl.memory - - - -.. autoclass:: MemoryUSMHost - - - - - .. rubric:: Methods - - .. autosummary:: - :toctree: generated - - ~MemoryUSMHost.copy_from_device - ~MemoryUSMHost.copy_from_host - ~MemoryUSMHost.copy_to_host - ~MemoryUSMHost.get_usm_type - ~MemoryUSMHost.get_usm_type_enum - ~MemoryUSMHost.memset - ~MemoryUSMHost.tobytes - - - - - - .. rubric:: Attributes - - .. autosummary:: - :toctree: generated - - ~MemoryUSMHost.nbytes - ~MemoryUSMHost.reference_obj - ~MemoryUSMHost.size - ~MemoryUSMHost.sycl_context - ~MemoryUSMHost.sycl_device - ~MemoryUSMHost.sycl_queue - ~MemoryUSMHost.__sycl_usm_array_interface__ - - \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.memory.MemoryUSMShared.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.memory.MemoryUSMShared.rst.txt deleted file mode 100644 index d9912d6b77..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.memory.MemoryUSMShared.rst.txt +++ /dev/null @@ -1,43 +0,0 @@ -ο»Ώdpctl.memory.MemoryUSMShared -============================ - -.. currentmodule:: dpctl.memory - - - -.. autoclass:: MemoryUSMShared - - - - - .. rubric:: Methods - - .. autosummary:: - :toctree: generated - - ~MemoryUSMShared.copy_from_device - ~MemoryUSMShared.copy_from_host - ~MemoryUSMShared.copy_to_host - ~MemoryUSMShared.get_usm_type - ~MemoryUSMShared.get_usm_type_enum - ~MemoryUSMShared.memset - ~MemoryUSMShared.tobytes - - - - - - .. rubric:: Attributes - - .. autosummary:: - :toctree: generated - - ~MemoryUSMShared.nbytes - ~MemoryUSMShared.reference_obj - ~MemoryUSMShared.size - ~MemoryUSMShared.sycl_context - ~MemoryUSMShared.sycl_device - ~MemoryUSMShared.sycl_queue - ~MemoryUSMShared.__sycl_usm_array_interface__ - - \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.memory.USMAllocationError.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.memory.USMAllocationError.rst.txt deleted file mode 100644 index 5d178bc412..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.memory.USMAllocationError.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.memory.USMAllocationError -=============================== - -.. currentmodule:: dpctl.memory - -.. autoexception:: USMAllocationError \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.memory.as_usm_memory.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.memory.as_usm_memory.rst.txt deleted file mode 100644 index af64b36c1f..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.memory.as_usm_memory.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.memory.as\_usm\_memory -============================ - -.. currentmodule:: dpctl.memory - -.. autofunction:: as_usm_memory \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.program.SyclKernel.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.program.SyclKernel.rst.txt deleted file mode 100644 index 98ed053dab..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.program.SyclKernel.rst.txt +++ /dev/null @@ -1,39 +0,0 @@ -ο»Ώdpctl.program.SyclKernel -======================== - -.. currentmodule:: dpctl.program - - - -.. autoclass:: SyclKernel - - - - - .. rubric:: Methods - - .. autosummary:: - - ~SyclKernel.__init__ - ~SyclKernel.addressof_ref - ~SyclKernel.get_function_name - ~SyclKernel.get_num_args - - - - - - .. rubric:: Attributes - - .. autosummary:: - - ~SyclKernel.compile_num_sub_groups - ~SyclKernel.compile_sub_group_size - ~SyclKernel.max_num_sub_groups - ~SyclKernel.max_sub_group_size - ~SyclKernel.num_args - ~SyclKernel.preferred_work_group_size_multiple - ~SyclKernel.private_mem_size - ~SyclKernel.work_group_size - - \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.program.SyclProgram.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.program.SyclProgram.rst.txt deleted file mode 100644 index 0cc6235dfa..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.program.SyclProgram.rst.txt +++ /dev/null @@ -1,26 +0,0 @@ -ο»Ώdpctl.program.SyclProgram -========================= - -.. currentmodule:: dpctl.program - - - -.. autoclass:: SyclProgram - - - - - .. rubric:: Methods - - .. autosummary:: - - ~SyclProgram.__init__ - ~SyclProgram.addressof_ref - ~SyclProgram.get_sycl_kernel - ~SyclProgram.has_sycl_kernel - - - - - - \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.program.SyclProgramCompilationError.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.program.SyclProgramCompilationError.rst.txt deleted file mode 100644 index 36ebd4beae..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.program.SyclProgramCompilationError.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.program.SyclProgramCompilationError -========================================= - -.. currentmodule:: dpctl.program - -.. autoexception:: SyclProgramCompilationError \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.program.create_program_from_source.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.program.create_program_from_source.rst.txt deleted file mode 100644 index 08dae5a6d3..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.program.create_program_from_source.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.program.create\_program\_from\_source -=========================================== - -.. currentmodule:: dpctl.program - -.. autofunction:: create_program_from_source \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.program.create_program_from_spirv.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.program.create_program_from_spirv.rst.txt deleted file mode 100644 index 386c71ef96..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.program.create_program_from_spirv.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.program.create\_program\_from\_spirv -========================================== - -.. currentmodule:: dpctl.program - -.. autofunction:: create_program_from_spirv \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.select_accelerator_device.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.select_accelerator_device.rst.txt deleted file mode 100644 index 5925f67f7d..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.select_accelerator_device.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.select\_accelerator\_device -================================= - -.. currentmodule:: dpctl - -.. autofunction:: select_accelerator_device \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.select_cpu_device.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.select_cpu_device.rst.txt deleted file mode 100644 index 82271525e2..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.select_cpu_device.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.select\_cpu\_device -========================= - -.. currentmodule:: dpctl - -.. autofunction:: select_cpu_device \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.select_default_device.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.select_default_device.rst.txt deleted file mode 100644 index 9cf687d9d3..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.select_default_device.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.select\_default\_device -============================= - -.. currentmodule:: dpctl - -.. autofunction:: select_default_device \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.select_device_with_aspects.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.select_device_with_aspects.rst.txt deleted file mode 100644 index 2f1c8299df..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.select_device_with_aspects.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.select\_device\_with\_aspects -=================================== - -.. currentmodule:: dpctl - -.. autofunction:: select_device_with_aspects \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.select_gpu_device.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.select_gpu_device.rst.txt deleted file mode 100644 index 4edb77a3d5..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.select_gpu_device.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.select\_gpu\_device -========================= - -.. currentmodule:: dpctl - -.. autofunction:: select_gpu_device \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.__array_api_version__.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.__array_api_version__.rst.txt deleted file mode 100644 index 413d4fc60f..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.__array_api_version__.rst.txt +++ /dev/null @@ -1,14 +0,0 @@ -ο»Ώdpctl.tensor.\_\_array\_api\_version\_\_ -======================================== - -.. currentmodule:: dpctl.tensor - -.. autoclass:: __array_api_version__ - - - - - - - - \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.__array_namespace_info__.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.__array_namespace_info__.rst.txt deleted file mode 100644 index eabbfb7ba4..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.__array_namespace_info__.rst.txt +++ /dev/null @@ -1,14 +0,0 @@ -ο»Ώdpctl.tensor.\_\_array\_namespace\_info\_\_ -=========================================== - -.. currentmodule:: dpctl.tensor - -.. autoclass:: __array_namespace_info__ - - - - - - - - \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor._array_api.Info.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor._array_api.Info.rst.txt deleted file mode 100644 index bb422e3e71..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor._array_api.Info.rst.txt +++ /dev/null @@ -1,25 +0,0 @@ -ο»Ώdpctl.tensor.\_array\_api.Info -============================== - -.. currentmodule:: dpctl.tensor._array_api - -.. autoclass:: Info - - - - .. rubric:: Methods - - .. autosummary:: - :toctree: generated - - ~Info.capabilities - ~Info.default_device - ~Info.default_dtypes - ~Info.devices - ~Info.dtypes - - - - - - \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.abs.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.abs.rst.txt deleted file mode 100644 index e161cfa067..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.abs.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.abs -================ - -.. currentmodule:: dpctl.tensor - - -.. autodata:: abs - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.acos.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.acos.rst.txt deleted file mode 100644 index fd9be45bd5..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.acos.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.acos -================= - -.. currentmodule:: dpctl.tensor - - -.. autodata:: acos - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.acosh.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.acosh.rst.txt deleted file mode 100644 index 2d92fa33f7..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.acosh.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.acosh -================== - -.. currentmodule:: dpctl.tensor - - -.. autodata:: acosh - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.add.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.add.rst.txt deleted file mode 100644 index 750eb78422..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.add.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.add -================ - -.. currentmodule:: dpctl.tensor - - -.. autodata:: add - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.all.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.all.rst.txt deleted file mode 100644 index 55c811f7de..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.all.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.all -================ - -.. currentmodule:: dpctl.tensor - -.. autofunction:: all \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.allclose.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.allclose.rst.txt deleted file mode 100644 index d375801fe0..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.allclose.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.allclose -===================== - -.. currentmodule:: dpctl.tensor - -.. autofunction:: allclose \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.angle.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.angle.rst.txt deleted file mode 100644 index 92bf7889d6..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.angle.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.angle -================== - -.. currentmodule:: dpctl.tensor - - -.. autodata:: angle - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.any.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.any.rst.txt deleted file mode 100644 index 307ea12a87..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.any.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.any -================ - -.. currentmodule:: dpctl.tensor - -.. autofunction:: any \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.arange.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.arange.rst.txt deleted file mode 100644 index 521191f76d..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.arange.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.arange -=================== - -.. currentmodule:: dpctl.tensor - -.. autofunction:: arange \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.argmax.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.argmax.rst.txt deleted file mode 100644 index d2022a106c..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.argmax.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.argmax -=================== - -.. currentmodule:: dpctl.tensor - -.. autofunction:: argmax \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.argmin.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.argmin.rst.txt deleted file mode 100644 index 839e020e9d..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.argmin.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.argmin -=================== - -.. currentmodule:: dpctl.tensor - -.. autofunction:: argmin \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.argsort.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.argsort.rst.txt deleted file mode 100644 index 65e86d080c..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.argsort.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.argsort -==================== - -.. currentmodule:: dpctl.tensor - -.. autofunction:: argsort \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.asarray.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.asarray.rst.txt deleted file mode 100644 index 0e638f916d..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.asarray.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.asarray -==================== - -.. currentmodule:: dpctl.tensor - -.. autofunction:: asarray \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.asin.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.asin.rst.txt deleted file mode 100644 index 1953d52980..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.asin.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.asin -================= - -.. currentmodule:: dpctl.tensor - - -.. autodata:: asin - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.asinh.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.asinh.rst.txt deleted file mode 100644 index dd60bf7cc6..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.asinh.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.asinh -================== - -.. currentmodule:: dpctl.tensor - - -.. autodata:: asinh - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.astype.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.astype.rst.txt deleted file mode 100644 index d32a97c020..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.astype.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.astype -=================== - -.. currentmodule:: dpctl.tensor - -.. autofunction:: astype \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.atan.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.atan.rst.txt deleted file mode 100644 index faa84406bf..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.atan.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.atan -================= - -.. currentmodule:: dpctl.tensor - - -.. autodata:: atan - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.atan2.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.atan2.rst.txt deleted file mode 100644 index 408a421aec..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.atan2.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.atan2 -================== - -.. currentmodule:: dpctl.tensor - - -.. autodata:: atan2 - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.atanh.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.atanh.rst.txt deleted file mode 100644 index 1ce35c40d0..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.atanh.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.atanh -================== - -.. currentmodule:: dpctl.tensor - - -.. autodata:: atanh - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.bitwise_and.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.bitwise_and.rst.txt deleted file mode 100644 index c1127d20ef..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.bitwise_and.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.bitwise\_and -========================= - -.. currentmodule:: dpctl.tensor - - -.. autodata:: bitwise_and - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.bitwise_invert.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.bitwise_invert.rst.txt deleted file mode 100644 index 475eab383f..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.bitwise_invert.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.bitwise\_invert -============================ - -.. currentmodule:: dpctl.tensor - - -.. autodata:: bitwise_invert - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.bitwise_left_shift.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.bitwise_left_shift.rst.txt deleted file mode 100644 index d2cbaf2277..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.bitwise_left_shift.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.bitwise\_left\_shift -================================= - -.. currentmodule:: dpctl.tensor - - -.. autodata:: bitwise_left_shift - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.bitwise_or.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.bitwise_or.rst.txt deleted file mode 100644 index 2bed3d45f8..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.bitwise_or.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.bitwise\_or -======================== - -.. currentmodule:: dpctl.tensor - - -.. autodata:: bitwise_or - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.bitwise_right_shift.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.bitwise_right_shift.rst.txt deleted file mode 100644 index f147201cdb..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.bitwise_right_shift.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.bitwise\_right\_shift -================================== - -.. currentmodule:: dpctl.tensor - - -.. autodata:: bitwise_right_shift - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.bitwise_xor.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.bitwise_xor.rst.txt deleted file mode 100644 index 6089fbf6cb..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.bitwise_xor.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.bitwise\_xor -========================= - -.. currentmodule:: dpctl.tensor - - -.. autodata:: bitwise_xor - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.broadcast_arrays.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.broadcast_arrays.rst.txt deleted file mode 100644 index 57255de661..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.broadcast_arrays.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.broadcast\_arrays -============================== - -.. currentmodule:: dpctl.tensor - -.. autofunction:: broadcast_arrays \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.broadcast_to.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.broadcast_to.rst.txt deleted file mode 100644 index 3f59409f11..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.broadcast_to.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.broadcast\_to -========================== - -.. currentmodule:: dpctl.tensor - -.. autofunction:: broadcast_to \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.can_cast.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.can_cast.rst.txt deleted file mode 100644 index edb4a008bc..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.can_cast.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.can\_cast -====================== - -.. currentmodule:: dpctl.tensor - -.. autofunction:: can_cast \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.cbrt.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.cbrt.rst.txt deleted file mode 100644 index 693d6cf3c0..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.cbrt.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.cbrt -================= - -.. currentmodule:: dpctl.tensor - - -.. autodata:: cbrt - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.ceil.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.ceil.rst.txt deleted file mode 100644 index efab7e7653..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.ceil.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.ceil -================= - -.. currentmodule:: dpctl.tensor - - -.. autodata:: ceil - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.clip.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.clip.rst.txt deleted file mode 100644 index f17d537e9d..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.clip.rst.txt +++ /dev/null @@ -1,9 +0,0 @@ -ο»Ώdpctl.tensor.clip -================= - -.. currentmodule:: dpctl.tensor - - - - -.. autofunction:: clip diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.concat.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.concat.rst.txt deleted file mode 100644 index 8d8bb803b7..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.concat.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.concat -=================== - -.. currentmodule:: dpctl.tensor - -.. autofunction:: concat \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.conj.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.conj.rst.txt deleted file mode 100644 index 48daf1ef7e..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.conj.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.conj -================= - -.. currentmodule:: dpctl.tensor - - -.. autodata:: conj - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.copy.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.copy.rst.txt deleted file mode 100644 index bf3ca11772..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.copy.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.copy -================= - -.. currentmodule:: dpctl.tensor - -.. autofunction:: copy \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.copysign.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.copysign.rst.txt deleted file mode 100644 index 77ee455427..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.copysign.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.copysign -===================== - -.. currentmodule:: dpctl.tensor - - -.. autodata:: copysign - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.cos.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.cos.rst.txt deleted file mode 100644 index fbab402136..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.cos.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.cos -================ - -.. currentmodule:: dpctl.tensor - - -.. autodata:: cos - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.cosh.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.cosh.rst.txt deleted file mode 100644 index ebbfab7152..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.cosh.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.cosh -================= - -.. currentmodule:: dpctl.tensor - - -.. autodata:: cosh - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.count_nonzero.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.count_nonzero.rst.txt deleted file mode 100644 index 9636ee371d..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.count_nonzero.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.count\_nonzero -=========================== - -.. currentmodule:: dpctl.tensor - -.. autofunction:: count_nonzero \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.diff.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.diff.rst.txt deleted file mode 100644 index c0a567c910..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.diff.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.diff -================= - -.. currentmodule:: dpctl.tensor - -.. autofunction:: diff \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.divide.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.divide.rst.txt deleted file mode 100644 index 98a0afc0cd..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.divide.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.divide -=================== - -.. currentmodule:: dpctl.tensor - - -.. autodata:: divide - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.empty.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.empty.rst.txt deleted file mode 100644 index 3a9c2822f4..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.empty.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.empty -================== - -.. currentmodule:: dpctl.tensor - -.. autofunction:: empty \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.empty_like.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.empty_like.rst.txt deleted file mode 100644 index 69d983b8d8..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.empty_like.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.empty\_like -======================== - -.. currentmodule:: dpctl.tensor - -.. autofunction:: empty_like \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.equal.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.equal.rst.txt deleted file mode 100644 index b083456723..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.equal.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.equal -================== - -.. currentmodule:: dpctl.tensor - - -.. autodata:: equal - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.exp.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.exp.rst.txt deleted file mode 100644 index d2c26fd761..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.exp.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.exp -================ - -.. currentmodule:: dpctl.tensor - - -.. autodata:: exp - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.exp2.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.exp2.rst.txt deleted file mode 100644 index 7149d922cc..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.exp2.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.exp2 -================= - -.. currentmodule:: dpctl.tensor - - -.. autodata:: exp2 - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.expand_dims.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.expand_dims.rst.txt deleted file mode 100644 index b587a96026..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.expand_dims.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.expand\_dims -========================= - -.. currentmodule:: dpctl.tensor - -.. autofunction:: expand_dims \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.expm1.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.expm1.rst.txt deleted file mode 100644 index 2c8ef7fb4c..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.expm1.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.expm1 -================== - -.. currentmodule:: dpctl.tensor - - -.. autodata:: expm1 - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.extract.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.extract.rst.txt deleted file mode 100644 index 5f235537dd..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.extract.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.extract -==================== - -.. currentmodule:: dpctl.tensor - -.. autofunction:: extract \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.eye.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.eye.rst.txt deleted file mode 100644 index f0c9158859..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.eye.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.eye -================ - -.. currentmodule:: dpctl.tensor - -.. autofunction:: eye \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.finfo.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.finfo.rst.txt deleted file mode 100644 index 04076cd297..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.finfo.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.finfo -================== - -.. currentmodule:: dpctl.tensor - -.. autofunction:: finfo \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.flip.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.flip.rst.txt deleted file mode 100644 index 05f329aaa6..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.flip.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.flip -================= - -.. currentmodule:: dpctl.tensor - -.. autofunction:: flip \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.floor.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.floor.rst.txt deleted file mode 100644 index 675c83fdb4..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.floor.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.floor -================== - -.. currentmodule:: dpctl.tensor - - -.. autodata:: floor - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.floor_divide.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.floor_divide.rst.txt deleted file mode 100644 index 7384e22ac2..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.floor_divide.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.floor\_divide -========================== - -.. currentmodule:: dpctl.tensor - - -.. autodata:: floor_divide - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.from_dlpack.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.from_dlpack.rst.txt deleted file mode 100644 index ee2e5d1e29..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.from_dlpack.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.from\_dlpack -========================= - -.. currentmodule:: dpctl.tensor - -.. autofunction:: from_dlpack \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.from_numpy.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.from_numpy.rst.txt deleted file mode 100644 index c9a0834f9e..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.from_numpy.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.from\_numpy -======================== - -.. currentmodule:: dpctl.tensor - -.. autofunction:: from_numpy \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.full.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.full.rst.txt deleted file mode 100644 index 3bd2d0dd19..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.full.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.full -================= - -.. currentmodule:: dpctl.tensor - -.. autofunction:: full \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.full_like.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.full_like.rst.txt deleted file mode 100644 index d90e84fd95..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.full_like.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.full\_like -======================= - -.. currentmodule:: dpctl.tensor - -.. autofunction:: full_like \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.greater.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.greater.rst.txt deleted file mode 100644 index 6542f006e5..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.greater.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.greater -==================== - -.. currentmodule:: dpctl.tensor - - -.. autodata:: greater - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.greater_equal.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.greater_equal.rst.txt deleted file mode 100644 index 694c8ec90a..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.greater_equal.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.greater\_equal -=========================== - -.. currentmodule:: dpctl.tensor - - -.. autodata:: greater_equal - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.hypot.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.hypot.rst.txt deleted file mode 100644 index 75674857d3..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.hypot.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.hypot -================== - -.. currentmodule:: dpctl.tensor - - -.. autodata:: hypot - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.iinfo.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.iinfo.rst.txt deleted file mode 100644 index f7c289367f..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.iinfo.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.iinfo -================== - -.. currentmodule:: dpctl.tensor - -.. autofunction:: iinfo \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.imag.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.imag.rst.txt deleted file mode 100644 index 8523007b7c..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.imag.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.imag -================= - -.. currentmodule:: dpctl.tensor - - -.. autodata:: imag - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.isdtype.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.isdtype.rst.txt deleted file mode 100644 index 553ece7375..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.isdtype.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.isdtype -==================== - -.. currentmodule:: dpctl.tensor - -.. autofunction:: isdtype \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.isfinite.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.isfinite.rst.txt deleted file mode 100644 index 63a36d5f60..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.isfinite.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.isfinite -===================== - -.. currentmodule:: dpctl.tensor - - -.. autodata:: isfinite - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.isinf.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.isinf.rst.txt deleted file mode 100644 index b07277dfc1..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.isinf.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.isinf -================== - -.. currentmodule:: dpctl.tensor - - -.. autodata:: isinf - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.isnan.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.isnan.rst.txt deleted file mode 100644 index 6134a13110..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.isnan.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.isnan -================== - -.. currentmodule:: dpctl.tensor - - -.. autodata:: isnan - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.less.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.less.rst.txt deleted file mode 100644 index 08f08c97ea..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.less.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.less -================= - -.. currentmodule:: dpctl.tensor - - -.. autodata:: less - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.less_equal.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.less_equal.rst.txt deleted file mode 100644 index 5cf601ba5d..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.less_equal.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.less\_equal -======================== - -.. currentmodule:: dpctl.tensor - - -.. autodata:: less_equal - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.linspace.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.linspace.rst.txt deleted file mode 100644 index 4effd23805..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.linspace.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.linspace -===================== - -.. currentmodule:: dpctl.tensor - -.. autofunction:: linspace \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.log.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.log.rst.txt deleted file mode 100644 index 63f74b80f6..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.log.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.log -================ - -.. currentmodule:: dpctl.tensor - - -.. autodata:: log - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.log10.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.log10.rst.txt deleted file mode 100644 index 62f92c4f13..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.log10.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.log10 -================== - -.. currentmodule:: dpctl.tensor - - -.. autodata:: log10 - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.log1p.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.log1p.rst.txt deleted file mode 100644 index 292e5330e2..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.log1p.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.log1p -================== - -.. currentmodule:: dpctl.tensor - - -.. autodata:: log1p - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.log2.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.log2.rst.txt deleted file mode 100644 index 719ce19450..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.log2.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.log2 -================= - -.. currentmodule:: dpctl.tensor - - -.. autodata:: log2 - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.logaddexp.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.logaddexp.rst.txt deleted file mode 100644 index 0eb0f342f3..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.logaddexp.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.logaddexp -====================== - -.. currentmodule:: dpctl.tensor - - -.. autodata:: logaddexp - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.logical_and.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.logical_and.rst.txt deleted file mode 100644 index 0fa47583c6..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.logical_and.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.logical\_and -========================= - -.. currentmodule:: dpctl.tensor - - -.. autodata:: logical_and - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.logical_not.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.logical_not.rst.txt deleted file mode 100644 index 252497e25b..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.logical_not.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.logical\_not -========================= - -.. currentmodule:: dpctl.tensor - - -.. autodata:: logical_not - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.logical_or.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.logical_or.rst.txt deleted file mode 100644 index 2731776516..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.logical_or.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.logical\_or -======================== - -.. currentmodule:: dpctl.tensor - - -.. autodata:: logical_or - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.logical_xor.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.logical_xor.rst.txt deleted file mode 100644 index 3354e66a3a..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.logical_xor.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.logical\_xor -========================= - -.. currentmodule:: dpctl.tensor - - -.. autodata:: logical_xor - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.logsumexp.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.logsumexp.rst.txt deleted file mode 100644 index 6c83d79f1c..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.logsumexp.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.logsumexp -====================== - -.. currentmodule:: dpctl.tensor - -.. autofunction:: logsumexp \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.matmul.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.matmul.rst.txt deleted file mode 100644 index 47f5028044..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.matmul.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.matmul -=================== - -.. currentmodule:: dpctl.tensor - -.. autofunction:: matmul \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.matrix_transpose.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.matrix_transpose.rst.txt deleted file mode 100644 index 35748e7296..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.matrix_transpose.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.matrix\_transpose -============================== - -.. currentmodule:: dpctl.tensor - -.. autofunction:: matrix_transpose \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.max.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.max.rst.txt deleted file mode 100644 index 00510b5a94..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.max.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.max -================ - -.. currentmodule:: dpctl.tensor - -.. autofunction:: max \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.maximum.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.maximum.rst.txt deleted file mode 100644 index ee4368276c..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.maximum.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.maximum -==================== - -.. currentmodule:: dpctl.tensor - - -.. autodata:: maximum - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.mean.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.mean.rst.txt deleted file mode 100644 index 557098c2f1..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.mean.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.mean -================= - -.. currentmodule:: dpctl.tensor - -.. autofunction:: mean \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.meshgrid.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.meshgrid.rst.txt deleted file mode 100644 index 80f275397c..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.meshgrid.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.meshgrid -===================== - -.. currentmodule:: dpctl.tensor - -.. autofunction:: meshgrid \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.min.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.min.rst.txt deleted file mode 100644 index e09029799b..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.min.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.min -================ - -.. currentmodule:: dpctl.tensor - -.. autofunction:: min \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.minimum.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.minimum.rst.txt deleted file mode 100644 index 8b00b2a5ac..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.minimum.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.minimum -==================== - -.. currentmodule:: dpctl.tensor - - -.. autodata:: minimum - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.moveaxis.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.moveaxis.rst.txt deleted file mode 100644 index c2f5b89641..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.moveaxis.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.moveaxis -===================== - -.. currentmodule:: dpctl.tensor - -.. autofunction:: moveaxis \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.multiply.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.multiply.rst.txt deleted file mode 100644 index 2ecbc311f5..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.multiply.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.multiply -===================== - -.. currentmodule:: dpctl.tensor - - -.. autodata:: multiply - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.negative.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.negative.rst.txt deleted file mode 100644 index af317496db..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.negative.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.negative -===================== - -.. currentmodule:: dpctl.tensor - - -.. autodata:: negative - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.nextafter.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.nextafter.rst.txt deleted file mode 100644 index 78f6b33f9f..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.nextafter.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.nextafter -====================== - -.. currentmodule:: dpctl.tensor - - -.. autodata:: nextafter - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.nonzero.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.nonzero.rst.txt deleted file mode 100644 index c6697fabc6..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.nonzero.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.nonzero -==================== - -.. currentmodule:: dpctl.tensor - -.. autofunction:: nonzero \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.not_equal.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.not_equal.rst.txt deleted file mode 100644 index 212fa0d2c8..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.not_equal.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.not\_equal -======================= - -.. currentmodule:: dpctl.tensor - - -.. autodata:: not_equal - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.ones.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.ones.rst.txt deleted file mode 100644 index 1880283a19..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.ones.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.ones -================= - -.. currentmodule:: dpctl.tensor - -.. autofunction:: ones \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.ones_like.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.ones_like.rst.txt deleted file mode 100644 index def1d4b0f4..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.ones_like.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.ones\_like -======================= - -.. currentmodule:: dpctl.tensor - -.. autofunction:: ones_like \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.permute_dims.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.permute_dims.rst.txt deleted file mode 100644 index dd0de8f4af..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.permute_dims.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.permute\_dims -========================== - -.. currentmodule:: dpctl.tensor - -.. autofunction:: permute_dims \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.place.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.place.rst.txt deleted file mode 100644 index fdb0b47df7..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.place.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.place -================== - -.. currentmodule:: dpctl.tensor - -.. autofunction:: place \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.positive.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.positive.rst.txt deleted file mode 100644 index 972431c092..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.positive.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.positive -===================== - -.. currentmodule:: dpctl.tensor - - -.. autodata:: positive - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.pow.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.pow.rst.txt deleted file mode 100644 index 9583f7f587..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.pow.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.pow -================ - -.. currentmodule:: dpctl.tensor - - -.. autodata:: pow - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.prod.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.prod.rst.txt deleted file mode 100644 index 7acfed6d8c..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.prod.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.prod -================= - -.. currentmodule:: dpctl.tensor - -.. autofunction:: prod \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.put.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.put.rst.txt deleted file mode 100644 index bf6b4c3c19..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.put.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.put -================ - -.. currentmodule:: dpctl.tensor - -.. autofunction:: put \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.put_along_axis.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.put_along_axis.rst.txt deleted file mode 100644 index 43f4276fb9..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.put_along_axis.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.put\_along\_axis -============================= - -.. currentmodule:: dpctl.tensor - -.. autofunction:: put_along_axis \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.real.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.real.rst.txt deleted file mode 100644 index 1dc994766b..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.real.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.real -================= - -.. currentmodule:: dpctl.tensor - - -.. autodata:: real - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.reciprocal.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.reciprocal.rst.txt deleted file mode 100644 index eda17cf1a0..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.reciprocal.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.reciprocal -======================= - -.. currentmodule:: dpctl.tensor - - -.. autodata:: reciprocal - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.reduce_hypot.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.reduce_hypot.rst.txt deleted file mode 100644 index ef5739e77c..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.reduce_hypot.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.reduce\_hypot -========================== - -.. currentmodule:: dpctl.tensor - -.. autofunction:: reduce_hypot \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.remainder.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.remainder.rst.txt deleted file mode 100644 index 9fa11f3056..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.remainder.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.remainder -====================== - -.. currentmodule:: dpctl.tensor - - -.. autodata:: remainder - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.repeat.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.repeat.rst.txt deleted file mode 100644 index 265484d96b..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.repeat.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.repeat -=================== - -.. currentmodule:: dpctl.tensor - -.. autofunction:: repeat \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.reshape.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.reshape.rst.txt deleted file mode 100644 index da1f6c2861..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.reshape.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.reshape -==================== - -.. currentmodule:: dpctl.tensor - -.. autofunction:: reshape \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.result_type.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.result_type.rst.txt deleted file mode 100644 index a2e15379cb..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.result_type.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.result\_type -========================= - -.. currentmodule:: dpctl.tensor - -.. autofunction:: result_type \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.roll.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.roll.rst.txt deleted file mode 100644 index 17b57beee0..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.roll.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.roll -================= - -.. currentmodule:: dpctl.tensor - -.. autofunction:: roll \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.round.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.round.rst.txt deleted file mode 100644 index 1379aef0f6..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.round.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.round -================== - -.. currentmodule:: dpctl.tensor - - -.. autodata:: round - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.rsqrt.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.rsqrt.rst.txt deleted file mode 100644 index fae8f3308a..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.rsqrt.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.rsqrt -================== - -.. currentmodule:: dpctl.tensor - - -.. autodata:: rsqrt - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.searchsorted.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.searchsorted.rst.txt deleted file mode 100644 index 13c218de66..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.searchsorted.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.searchsorted -========================= - -.. currentmodule:: dpctl.tensor - -.. autofunction:: searchsorted \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.sign.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.sign.rst.txt deleted file mode 100644 index f77540b131..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.sign.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.sign -================= - -.. currentmodule:: dpctl.tensor - - -.. autodata:: sign - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.signbit.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.signbit.rst.txt deleted file mode 100644 index a9548b640f..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.signbit.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.signbit -==================== - -.. currentmodule:: dpctl.tensor - - -.. autodata:: signbit - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.sin.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.sin.rst.txt deleted file mode 100644 index 3e76056482..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.sin.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.sin -================ - -.. currentmodule:: dpctl.tensor - - -.. autodata:: sin - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.sinh.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.sinh.rst.txt deleted file mode 100644 index a9997c8eed..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.sinh.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.sinh -================= - -.. currentmodule:: dpctl.tensor - - -.. autodata:: sinh - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.sort.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.sort.rst.txt deleted file mode 100644 index d2f5fa9d0c..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.sort.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.sort -================= - -.. currentmodule:: dpctl.tensor - -.. autofunction:: sort \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.sqrt.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.sqrt.rst.txt deleted file mode 100644 index 3e3fd59c0a..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.sqrt.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.sqrt -================= - -.. currentmodule:: dpctl.tensor - - -.. autodata:: sqrt - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.square.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.square.rst.txt deleted file mode 100644 index a24edb963d..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.square.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.square -=================== - -.. currentmodule:: dpctl.tensor - - -.. autodata:: square - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.squeeze.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.squeeze.rst.txt deleted file mode 100644 index b6efde4da2..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.squeeze.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.squeeze -==================== - -.. currentmodule:: dpctl.tensor - -.. autofunction:: squeeze \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.stack.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.stack.rst.txt deleted file mode 100644 index 20e7630c47..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.stack.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.stack -================== - -.. currentmodule:: dpctl.tensor - -.. autofunction:: stack \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.std.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.std.rst.txt deleted file mode 100644 index f32a11c242..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.std.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.std -================ - -.. currentmodule:: dpctl.tensor - -.. autofunction:: std \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.subtract.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.subtract.rst.txt deleted file mode 100644 index b94a323444..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.subtract.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.subtract -===================== - -.. currentmodule:: dpctl.tensor - - -.. autodata:: subtract - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.sum.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.sum.rst.txt deleted file mode 100644 index 3f67e6c94d..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.sum.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.sum -================ - -.. currentmodule:: dpctl.tensor - -.. autofunction:: sum \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.take.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.take.rst.txt deleted file mode 100644 index 09d3142aa9..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.take.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.take -================= - -.. currentmodule:: dpctl.tensor - -.. autofunction:: take \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.take_along_axis.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.take_along_axis.rst.txt deleted file mode 100644 index c30144abc8..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.take_along_axis.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.take\_along\_axis -============================== - -.. currentmodule:: dpctl.tensor - -.. autofunction:: take_along_axis \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.tan.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.tan.rst.txt deleted file mode 100644 index 4c546297d2..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.tan.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.tan -================ - -.. currentmodule:: dpctl.tensor - - -.. autodata:: tan - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.tanh.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.tanh.rst.txt deleted file mode 100644 index 72ec72609d..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.tanh.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.tanh -================= - -.. currentmodule:: dpctl.tensor - - -.. autodata:: tanh - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.tensordot.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.tensordot.rst.txt deleted file mode 100644 index c77f0d75ef..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.tensordot.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.tensordot -====================== - -.. currentmodule:: dpctl.tensor - -.. autofunction:: tensordot \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.tile.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.tile.rst.txt deleted file mode 100644 index 8fa02c0044..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.tile.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.tile -================= - -.. currentmodule:: dpctl.tensor - -.. autofunction:: tile \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.top_k.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.top_k.rst.txt deleted file mode 100644 index 9f407d3657..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.top_k.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.top\_k -=================== - -.. currentmodule:: dpctl.tensor - -.. autofunction:: top_k \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.tril.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.tril.rst.txt deleted file mode 100644 index 652076730a..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.tril.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.tril -================= - -.. currentmodule:: dpctl.tensor - -.. autofunction:: tril \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.triu.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.triu.rst.txt deleted file mode 100644 index 0178f8fa5f..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.triu.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.triu -================= - -.. currentmodule:: dpctl.tensor - -.. autofunction:: triu \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.trunc.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.trunc.rst.txt deleted file mode 100644 index 8c5ba10d29..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.trunc.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -ο»Ώdpctl.tensor.trunc -================== - -.. currentmodule:: dpctl.tensor - - -.. autodata:: trunc - :no-value: - - diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.unique_all.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.unique_all.rst.txt deleted file mode 100644 index cfa2ef4fb0..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.unique_all.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.unique\_all -======================== - -.. currentmodule:: dpctl.tensor - -.. autofunction:: unique_all \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.unique_counts.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.unique_counts.rst.txt deleted file mode 100644 index 9fdb794afd..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.unique_counts.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.unique\_counts -=========================== - -.. currentmodule:: dpctl.tensor - -.. autofunction:: unique_counts \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.unique_inverse.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.unique_inverse.rst.txt deleted file mode 100644 index 9d15565039..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.unique_inverse.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.unique\_inverse -============================ - -.. currentmodule:: dpctl.tensor - -.. autofunction:: unique_inverse \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.unique_values.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.unique_values.rst.txt deleted file mode 100644 index 2f68c70eef..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.unique_values.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.unique\_values -=========================== - -.. currentmodule:: dpctl.tensor - -.. autofunction:: unique_values \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.unstack.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.unstack.rst.txt deleted file mode 100644 index 11555bfa4d..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.unstack.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.unstack -==================== - -.. currentmodule:: dpctl.tensor - -.. autofunction:: unstack \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.usm_ndarray.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.usm_ndarray.rst.txt deleted file mode 100644 index e3576e7f4e..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.usm_ndarray.rst.txt +++ /dev/null @@ -1,61 +0,0 @@ -ο»Ώdpctl.tensor.usm\_ndarray -========================= - -.. currentmodule:: dpctl.tensor - - - -.. autoclass:: usm_ndarray - - - - - .. rubric:: Methods - - .. autosummary:: - :toctree: generated - - ~usm_ndarray.to_device - - - - - - .. rubric:: Attributes - - .. autosummary:: - :toctree: generated - - ~usm_ndarray.T - ~usm_ndarray.device - ~usm_ndarray.dtype - ~usm_ndarray.flags - ~usm_ndarray.imag - ~usm_ndarray.itemsize - ~usm_ndarray.mT - ~usm_ndarray.nbytes - ~usm_ndarray.ndim - ~usm_ndarray.real - ~usm_ndarray.shape - ~usm_ndarray.size - ~usm_ndarray.strides - ~usm_ndarray.sycl_context - ~usm_ndarray.sycl_device - ~usm_ndarray.sycl_queue - ~usm_ndarray.usm_data - ~usm_ndarray.usm_type - - .. rubric:: Special attributes - - .. autosummary:: - :toctree: generated - - ~usm_ndarray.__dlpack_device__ - ~usm_ndarray.__dlpack__ - ~usm_ndarray.__sycl_usm_array_interface__ - ~usm_ndarray._pointer - ~usm_ndarray._element_offset - ~usm_ndarray._byte_bounds - - - \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.var.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.var.rst.txt deleted file mode 100644 index f1a1df5acf..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.var.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.var -================ - -.. currentmodule:: dpctl.tensor - -.. autofunction:: var \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.vecdot.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.vecdot.rst.txt deleted file mode 100644 index 6d5fed3252..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.vecdot.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.vecdot -=================== - -.. currentmodule:: dpctl.tensor - -.. autofunction:: vecdot \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.where.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.where.rst.txt deleted file mode 100644 index c7b1519044..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.where.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.where -================== - -.. currentmodule:: dpctl.tensor - -.. autofunction:: where \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.zeros.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.zeros.rst.txt deleted file mode 100644 index 6463bed904..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.zeros.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.zeros -================== - -.. currentmodule:: dpctl.tensor - -.. autofunction:: zeros \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.zeros_like.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.zeros_like.rst.txt deleted file mode 100644 index d4ba5d525d..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/dpctl.tensor.zeros_like.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -ο»Ώdpctl.tensor.zeros\_like -======================== - -.. currentmodule:: dpctl.tensor - -.. autofunction:: zeros_like \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclContext.addressof_ref.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclContext.addressof_ref.rst.txt deleted file mode 100644 index 07131f4076..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclContext.addressof_ref.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclContext.addressof\_ref -================================ - -.. currentmodule:: dpctl - -.. automethod:: SyclContext.addressof_ref \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclContext.device_count.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclContext.device_count.rst.txt deleted file mode 100644 index 5a23595996..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclContext.device_count.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclContext.device\_count -=============================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclContext.device_count \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclContext.get_devices.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclContext.get_devices.rst.txt deleted file mode 100644 index 5b51c1c4a1..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclContext.get_devices.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclContext.get\_devices -============================== - -.. currentmodule:: dpctl - -.. automethod:: SyclContext.get_devices \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.addressof_ref.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.addressof_ref.rst.txt deleted file mode 100644 index af5778d657..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.addressof_ref.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.addressof\_ref -=============================== - -.. currentmodule:: dpctl - -.. automethod:: SyclDevice.addressof_ref \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.backend.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.backend.rst.txt deleted file mode 100644 index 152767821a..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.backend.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.backend -======================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.backend \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.create_sub_devices.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.create_sub_devices.rst.txt deleted file mode 100644 index 2c812a1cba..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.create_sub_devices.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.create\_sub\_devices -===================================== - -.. currentmodule:: dpctl - -.. automethod:: SyclDevice.create_sub_devices \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.default_selector_score.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.default_selector_score.rst.txt deleted file mode 100644 index 17fd7ff314..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.default_selector_score.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.default\_selector\_score -========================================= - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.default_selector_score \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.device_type.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.device_type.rst.txt deleted file mode 100644 index aaed05e3a1..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.device_type.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.device\_type -============================= - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.device_type \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.driver_version.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.driver_version.rst.txt deleted file mode 100644 index f3bc2a5997..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.driver_version.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.driver\_version -================================ - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.driver_version \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.filter_string.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.filter_string.rst.txt deleted file mode 100644 index d1d5e0c871..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.filter_string.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.filter\_string -=============================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.filter_string \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.get_filter_string.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.get_filter_string.rst.txt deleted file mode 100644 index 530e715621..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.get_filter_string.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.get\_filter\_string -==================================== - -.. currentmodule:: dpctl - -.. automethod:: SyclDevice.get_filter_string \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.global_mem_cache_line_size.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.global_mem_cache_line_size.rst.txt deleted file mode 100644 index 519c81e8c4..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.global_mem_cache_line_size.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.global\_mem\_cache\_line\_size -=============================================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.global_mem_cache_line_size \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.global_mem_cache_size.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.global_mem_cache_size.rst.txt deleted file mode 100644 index b27cd497f9..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.global_mem_cache_size.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.global\_mem\_cache\_size -========================================= - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.global_mem_cache_size \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.global_mem_cache_type.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.global_mem_cache_type.rst.txt deleted file mode 100644 index 001040046c..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.global_mem_cache_type.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.global\_mem\_cache\_type -========================================= - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.global_mem_cache_type \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.global_mem_size.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.global_mem_size.rst.txt deleted file mode 100644 index 6f09c8457f..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.global_mem_size.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.global\_mem\_size -================================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.global_mem_size \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_accelerator.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_accelerator.rst.txt deleted file mode 100644 index 6814150943..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_accelerator.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.has\_aspect\_accelerator -========================================= - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.has_aspect_accelerator \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_atomic64.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_atomic64.rst.txt deleted file mode 100644 index 38f0e32197..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_atomic64.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.has\_aspect\_atomic64 -====================================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.has_aspect_atomic64 \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_cpu.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_cpu.rst.txt deleted file mode 100644 index 9d96710a5b..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_cpu.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.has\_aspect\_cpu -================================= - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.has_aspect_cpu \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_custom.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_custom.rst.txt deleted file mode 100644 index 3cfa159cfb..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_custom.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.has\_aspect\_custom -==================================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.has_aspect_custom \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_emulated.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_emulated.rst.txt deleted file mode 100644 index a6fa71a374..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_emulated.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.has\_aspect\_emulated -====================================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.has_aspect_emulated \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_fp16.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_fp16.rst.txt deleted file mode 100644 index 16c654d5c7..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_fp16.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.has\_aspect\_fp16 -================================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.has_aspect_fp16 \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_fp64.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_fp64.rst.txt deleted file mode 100644 index 143ae95c3a..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_fp64.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.has\_aspect\_fp64 -================================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.has_aspect_fp64 \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_gpu.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_gpu.rst.txt deleted file mode 100644 index 53e7c61634..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_gpu.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.has\_aspect\_gpu -================================= - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.has_aspect_gpu \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_host_debuggable.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_host_debuggable.rst.txt deleted file mode 100644 index 33fcf4ef41..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_host_debuggable.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.has\_aspect\_host\_debuggable -============================================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.has_aspect_host_debuggable \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_image.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_image.rst.txt deleted file mode 100644 index 8da3985aa4..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_image.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.has\_aspect\_image -=================================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.has_aspect_image \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_online_compiler.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_online_compiler.rst.txt deleted file mode 100644 index a30c4db647..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_online_compiler.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.has\_aspect\_online\_compiler -============================================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.has_aspect_online_compiler \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_online_linker.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_online_linker.rst.txt deleted file mode 100644 index 814ea3eecb..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_online_linker.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.has\_aspect\_online\_linker -============================================ - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.has_aspect_online_linker \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_queue_profiling.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_queue_profiling.rst.txt deleted file mode 100644 index a156d1bcf6..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_queue_profiling.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.has\_aspect\_queue\_profiling -============================================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.has_aspect_queue_profiling \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_usm_atomic_host_allocations.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_usm_atomic_host_allocations.rst.txt deleted file mode 100644 index c8e314bec1..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_usm_atomic_host_allocations.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.has\_aspect\_usm\_atomic\_host\_allocations -============================================================ - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.has_aspect_usm_atomic_host_allocations \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_usm_atomic_shared_allocations.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_usm_atomic_shared_allocations.rst.txt deleted file mode 100644 index 48cd9349fb..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_usm_atomic_shared_allocations.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.has\_aspect\_usm\_atomic\_shared\_allocations -============================================================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.has_aspect_usm_atomic_shared_allocations \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_usm_device_allocations.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_usm_device_allocations.rst.txt deleted file mode 100644 index d72660a20d..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_usm_device_allocations.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.has\_aspect\_usm\_device\_allocations -====================================================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.has_aspect_usm_device_allocations \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_usm_host_allocations.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_usm_host_allocations.rst.txt deleted file mode 100644 index f4fcc6d538..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_usm_host_allocations.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.has\_aspect\_usm\_host\_allocations -==================================================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.has_aspect_usm_host_allocations \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_usm_shared_allocations.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_usm_shared_allocations.rst.txt deleted file mode 100644 index e4e9bbd054..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_usm_shared_allocations.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.has\_aspect\_usm\_shared\_allocations -====================================================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.has_aspect_usm_shared_allocations \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_usm_system_allocations.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_usm_system_allocations.rst.txt deleted file mode 100644 index abe3820315..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.has_aspect_usm_system_allocations.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.has\_aspect\_usm\_system\_allocations -====================================================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.has_aspect_usm_system_allocations \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.image_2d_max_height.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.image_2d_max_height.rst.txt deleted file mode 100644 index e5b2ed3782..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.image_2d_max_height.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.image\_2d\_max\_height -======================================= - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.image_2d_max_height \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.image_2d_max_width.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.image_2d_max_width.rst.txt deleted file mode 100644 index 15c2935c6f..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.image_2d_max_width.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.image\_2d\_max\_width -====================================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.image_2d_max_width \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.image_3d_max_depth.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.image_3d_max_depth.rst.txt deleted file mode 100644 index c384a77bd8..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.image_3d_max_depth.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.image\_3d\_max\_depth -====================================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.image_3d_max_depth \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.image_3d_max_height.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.image_3d_max_height.rst.txt deleted file mode 100644 index 6efd6bd079..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.image_3d_max_height.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.image\_3d\_max\_height -======================================= - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.image_3d_max_height \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.image_3d_max_width.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.image_3d_max_width.rst.txt deleted file mode 100644 index 8baf536954..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.image_3d_max_width.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.image\_3d\_max\_width -====================================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.image_3d_max_width \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.is_accelerator.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.is_accelerator.rst.txt deleted file mode 100644 index 027100a97b..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.is_accelerator.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.is\_accelerator -================================ - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.is_accelerator \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.is_cpu.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.is_cpu.rst.txt deleted file mode 100644 index a1474ece58..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.is_cpu.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.is\_cpu -======================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.is_cpu \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.is_gpu.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.is_gpu.rst.txt deleted file mode 100644 index c0ebe1dec0..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.is_gpu.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.is\_gpu -======================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.is_gpu \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.local_mem_size.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.local_mem_size.rst.txt deleted file mode 100644 index aae8867637..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.local_mem_size.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.local\_mem\_size -================================= - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.local_mem_size \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_clock_frequency.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_clock_frequency.rst.txt deleted file mode 100644 index 71f63b7123..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_clock_frequency.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.max\_clock\_frequency -====================================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.max_clock_frequency \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_compute_units.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_compute_units.rst.txt deleted file mode 100644 index 4fe4a33502..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_compute_units.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.max\_compute\_units -==================================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.max_compute_units \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_mem_alloc_size.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_mem_alloc_size.rst.txt deleted file mode 100644 index 8c5e092904..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_mem_alloc_size.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.max\_mem\_alloc\_size -====================================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.max_mem_alloc_size \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_num_sub_groups.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_num_sub_groups.rst.txt deleted file mode 100644 index 0e72227797..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_num_sub_groups.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.max\_num\_sub\_groups -====================================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.max_num_sub_groups \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_read_image_args.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_read_image_args.rst.txt deleted file mode 100644 index c1c21edbb8..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_read_image_args.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.max\_read\_image\_args -======================================= - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.max_read_image_args \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_work_group_size.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_work_group_size.rst.txt deleted file mode 100644 index d441d75a56..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_work_group_size.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.max\_work\_group\_size -======================================= - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.max_work_group_size \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_work_item_dims.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_work_item_dims.rst.txt deleted file mode 100644 index 3a4b226c27..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_work_item_dims.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.max\_work\_item\_dims -====================================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.max_work_item_dims \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_work_item_sizes.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_work_item_sizes.rst.txt deleted file mode 100644 index 4fe8d27cfd..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_work_item_sizes.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.max\_work\_item\_sizes -======================================= - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.max_work_item_sizes \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_work_item_sizes1d.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_work_item_sizes1d.rst.txt deleted file mode 100644 index b482c408ae..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_work_item_sizes1d.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.max\_work\_item\_sizes1d -========================================= - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.max_work_item_sizes1d \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_work_item_sizes2d.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_work_item_sizes2d.rst.txt deleted file mode 100644 index e991b7cb21..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_work_item_sizes2d.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.max\_work\_item\_sizes2d -========================================= - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.max_work_item_sizes2d \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_work_item_sizes3d.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_work_item_sizes3d.rst.txt deleted file mode 100644 index e3cc5cdd40..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_work_item_sizes3d.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.max\_work\_item\_sizes3d -========================================= - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.max_work_item_sizes3d \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_write_image_args.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_write_image_args.rst.txt deleted file mode 100644 index bd4f6c9845..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.max_write_image_args.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.max\_write\_image\_args -======================================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.max_write_image_args \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.name.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.name.rst.txt deleted file mode 100644 index d02983ab96..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.name.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.name -===================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.name \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.native_vector_width_char.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.native_vector_width_char.rst.txt deleted file mode 100644 index 2fc9704c9a..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.native_vector_width_char.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.native\_vector\_width\_char -============================================ - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.native_vector_width_char \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.native_vector_width_double.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.native_vector_width_double.rst.txt deleted file mode 100644 index e2d7ef627c..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.native_vector_width_double.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.native\_vector\_width\_double -============================================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.native_vector_width_double \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.native_vector_width_float.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.native_vector_width_float.rst.txt deleted file mode 100644 index 807b67f484..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.native_vector_width_float.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.native\_vector\_width\_float -============================================= - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.native_vector_width_float \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.native_vector_width_half.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.native_vector_width_half.rst.txt deleted file mode 100644 index 4dca543213..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.native_vector_width_half.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.native\_vector\_width\_half -============================================ - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.native_vector_width_half \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.native_vector_width_int.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.native_vector_width_int.rst.txt deleted file mode 100644 index 4f9fafcc3f..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.native_vector_width_int.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.native\_vector\_width\_int -=========================================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.native_vector_width_int \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.native_vector_width_long.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.native_vector_width_long.rst.txt deleted file mode 100644 index 64c976f917..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.native_vector_width_long.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.native\_vector\_width\_long -============================================ - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.native_vector_width_long \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.native_vector_width_short.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.native_vector_width_short.rst.txt deleted file mode 100644 index 32510ac391..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.native_vector_width_short.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.native\_vector\_width\_short -============================================= - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.native_vector_width_short \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.parent_device.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.parent_device.rst.txt deleted file mode 100644 index c575f48675..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.parent_device.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.parent\_device -=============================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.parent_device \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.partition_max_sub_devices.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.partition_max_sub_devices.rst.txt deleted file mode 100644 index 69eea05c5e..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.partition_max_sub_devices.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.partition\_max\_sub\_devices -============================================= - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.partition_max_sub_devices \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.preferred_vector_width_char.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.preferred_vector_width_char.rst.txt deleted file mode 100644 index 2d063ba62b..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.preferred_vector_width_char.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.preferred\_vector\_width\_char -=============================================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.preferred_vector_width_char \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.preferred_vector_width_double.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.preferred_vector_width_double.rst.txt deleted file mode 100644 index 57abef7a64..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.preferred_vector_width_double.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.preferred\_vector\_width\_double -================================================= - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.preferred_vector_width_double \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.preferred_vector_width_float.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.preferred_vector_width_float.rst.txt deleted file mode 100644 index b9608e99a4..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.preferred_vector_width_float.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.preferred\_vector\_width\_float -================================================ - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.preferred_vector_width_float \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.preferred_vector_width_half.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.preferred_vector_width_half.rst.txt deleted file mode 100644 index 9a2012269c..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.preferred_vector_width_half.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.preferred\_vector\_width\_half -=============================================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.preferred_vector_width_half \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.preferred_vector_width_int.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.preferred_vector_width_int.rst.txt deleted file mode 100644 index 1e481f3626..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.preferred_vector_width_int.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.preferred\_vector\_width\_int -============================================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.preferred_vector_width_int \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.preferred_vector_width_long.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.preferred_vector_width_long.rst.txt deleted file mode 100644 index 56d1b147ae..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.preferred_vector_width_long.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.preferred\_vector\_width\_long -=============================================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.preferred_vector_width_long \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.preferred_vector_width_short.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.preferred_vector_width_short.rst.txt deleted file mode 100644 index d8c591470f..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.preferred_vector_width_short.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.preferred\_vector\_width\_short -================================================ - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.preferred_vector_width_short \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.print_device_info.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.print_device_info.rst.txt deleted file mode 100644 index be1a4358a5..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.print_device_info.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.print\_device\_info -==================================== - -.. currentmodule:: dpctl - -.. automethod:: SyclDevice.print_device_info \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.profiling_timer_resolution.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.profiling_timer_resolution.rst.txt deleted file mode 100644 index b850d40f7c..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.profiling_timer_resolution.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.profiling\_timer\_resolution -============================================= - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.profiling_timer_resolution \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.sub_group_independent_forward_progress.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.sub_group_independent_forward_progress.rst.txt deleted file mode 100644 index 5bd2810714..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.sub_group_independent_forward_progress.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.sub\_group\_independent\_forward\_progress -=========================================================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.sub_group_independent_forward_progress \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.sub_group_sizes.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.sub_group_sizes.rst.txt deleted file mode 100644 index 8a596dd0b2..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.sub_group_sizes.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.sub\_group\_sizes -================================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.sub_group_sizes \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.sycl_platform.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.sycl_platform.rst.txt deleted file mode 100644 index 0bdc6e35ee..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.sycl_platform.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.sycl\_platform -=============================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.sycl_platform \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.vendor.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.vendor.rst.txt deleted file mode 100644 index ea898cbbbd..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclDevice.vendor.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclDevice.vendor -======================= - -.. currentmodule:: dpctl - -.. autoattribute:: SyclDevice.vendor \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclEvent.addressof_ref.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclEvent.addressof_ref.rst.txt deleted file mode 100644 index 0afce28a92..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclEvent.addressof_ref.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclEvent.addressof\_ref -============================== - -.. currentmodule:: dpctl - -.. automethod:: SyclEvent.addressof_ref \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclEvent.backend.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclEvent.backend.rst.txt deleted file mode 100644 index 5687d4a545..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclEvent.backend.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclEvent.backend -======================= - -.. currentmodule:: dpctl - -.. autoattribute:: SyclEvent.backend \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclEvent.execution_status.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclEvent.execution_status.rst.txt deleted file mode 100644 index 73cc738424..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclEvent.execution_status.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclEvent.execution\_status -================================= - -.. currentmodule:: dpctl - -.. autoattribute:: SyclEvent.execution_status \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclEvent.get_wait_list.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclEvent.get_wait_list.rst.txt deleted file mode 100644 index 5371d5e271..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclEvent.get_wait_list.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclEvent.get\_wait\_list -=============================== - -.. currentmodule:: dpctl - -.. automethod:: SyclEvent.get_wait_list \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclEvent.profiling_info_end.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclEvent.profiling_info_end.rst.txt deleted file mode 100644 index ff3d540638..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclEvent.profiling_info_end.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclEvent.profiling\_info\_end -==================================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclEvent.profiling_info_end \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclEvent.profiling_info_start.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclEvent.profiling_info_start.rst.txt deleted file mode 100644 index b32af439e3..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclEvent.profiling_info_start.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclEvent.profiling\_info\_start -====================================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclEvent.profiling_info_start \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclEvent.profiling_info_submit.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclEvent.profiling_info_submit.rst.txt deleted file mode 100644 index aaeaf2b2d7..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclEvent.profiling_info_submit.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclEvent.profiling\_info\_submit -======================================= - -.. currentmodule:: dpctl - -.. autoattribute:: SyclEvent.profiling_info_submit \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclEvent.wait.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclEvent.wait.rst.txt deleted file mode 100644 index 3f44d21b98..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclEvent.wait.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclEvent.wait -==================== - -.. currentmodule:: dpctl - -.. automethod:: SyclEvent.wait \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclEvent.wait_for.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclEvent.wait_for.rst.txt deleted file mode 100644 index 58ed3add34..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclEvent.wait_for.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclEvent.wait\_for -========================= - -.. currentmodule:: dpctl - -.. automethod:: SyclEvent.wait_for \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclPlatform.backend.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclPlatform.backend.rst.txt deleted file mode 100644 index 7dba2313ae..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclPlatform.backend.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclPlatform.backend -========================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclPlatform.backend \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclPlatform.default_context.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclPlatform.default_context.rst.txt deleted file mode 100644 index 6624c185d0..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclPlatform.default_context.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclPlatform.default\_context -=================================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclPlatform.default_context \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclPlatform.name.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclPlatform.name.rst.txt deleted file mode 100644 index 8d57834569..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclPlatform.name.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclPlatform.name -======================= - -.. currentmodule:: dpctl - -.. autoattribute:: SyclPlatform.name \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclPlatform.print_platform_info.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclPlatform.print_platform_info.rst.txt deleted file mode 100644 index 943a2a5b81..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclPlatform.print_platform_info.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclPlatform.print\_platform\_info -======================================== - -.. currentmodule:: dpctl - -.. automethod:: SyclPlatform.print_platform_info \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclPlatform.vendor.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclPlatform.vendor.rst.txt deleted file mode 100644 index c0a9dca5d0..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclPlatform.vendor.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclPlatform.vendor -========================= - -.. currentmodule:: dpctl - -.. autoattribute:: SyclPlatform.vendor \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclPlatform.version.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclPlatform.version.rst.txt deleted file mode 100644 index 4939577921..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclPlatform.version.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclPlatform.version -========================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclPlatform.version \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.addressof_ref.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.addressof_ref.rst.txt deleted file mode 100644 index 0c534fe222..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.addressof_ref.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclQueue.addressof\_ref -============================== - -.. currentmodule:: dpctl - -.. automethod:: SyclQueue.addressof_ref \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.backend.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.backend.rst.txt deleted file mode 100644 index 6e8c25e82c..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.backend.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclQueue.backend -======================= - -.. currentmodule:: dpctl - -.. autoattribute:: SyclQueue.backend \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.driver_version.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.driver_version.rst.txt deleted file mode 100644 index 4fc9a03601..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.driver_version.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclQueue.driver\_version -=============================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclQueue.driver_version \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.get_sycl_context.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.get_sycl_context.rst.txt deleted file mode 100644 index a86373ede8..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.get_sycl_context.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclQueue.get\_sycl\_context -================================== - -.. currentmodule:: dpctl - -.. automethod:: SyclQueue.get_sycl_context \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.get_sycl_device.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.get_sycl_device.rst.txt deleted file mode 100644 index 07e219c280..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.get_sycl_device.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclQueue.get\_sycl\_device -================================= - -.. currentmodule:: dpctl - -.. automethod:: SyclQueue.get_sycl_device \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.has_enable_profiling.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.has_enable_profiling.rst.txt deleted file mode 100644 index aeef82cfa7..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.has_enable_profiling.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclQueue.has\_enable\_profiling -====================================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclQueue.has_enable_profiling \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.is_in_order.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.is_in_order.rst.txt deleted file mode 100644 index 4b1005a3d3..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.is_in_order.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclQueue.is\_in\_order -============================= - -.. currentmodule:: dpctl - -.. autoattribute:: SyclQueue.is_in_order \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.mem_advise.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.mem_advise.rst.txt deleted file mode 100644 index d79966fab7..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.mem_advise.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclQueue.mem\_advise -=========================== - -.. currentmodule:: dpctl - -.. automethod:: SyclQueue.mem_advise \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.memcpy.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.memcpy.rst.txt deleted file mode 100644 index 3f9f01e80e..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.memcpy.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclQueue.memcpy -====================== - -.. currentmodule:: dpctl - -.. automethod:: SyclQueue.memcpy \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.memcpy_async.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.memcpy_async.rst.txt deleted file mode 100644 index 2add7c5476..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.memcpy_async.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclQueue.memcpy\_async -============================= - -.. currentmodule:: dpctl - -.. automethod:: SyclQueue.memcpy_async \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.name.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.name.rst.txt deleted file mode 100644 index 7c1babbb3d..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.name.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclQueue.name -==================== - -.. currentmodule:: dpctl - -.. autoattribute:: SyclQueue.name \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.prefetch.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.prefetch.rst.txt deleted file mode 100644 index 1de3739e4b..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.prefetch.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclQueue.prefetch -======================== - -.. currentmodule:: dpctl - -.. automethod:: SyclQueue.prefetch \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.print_device_info.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.print_device_info.rst.txt deleted file mode 100644 index 7846dcafe9..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.print_device_info.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclQueue.print\_device\_info -=================================== - -.. currentmodule:: dpctl - -.. automethod:: SyclQueue.print_device_info \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.submit.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.submit.rst.txt deleted file mode 100644 index 8bb8be9723..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.submit.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclQueue.submit -====================== - -.. currentmodule:: dpctl - -.. automethod:: SyclQueue.submit \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.submit_async.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.submit_async.rst.txt deleted file mode 100644 index dda2ba31b3..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.submit_async.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclQueue.submit\_async -============================= - -.. currentmodule:: dpctl - -.. automethod:: SyclQueue.submit_async \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.submit_barrier.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.submit_barrier.rst.txt deleted file mode 100644 index 402d5389c0..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.submit_barrier.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclQueue.submit\_barrier -=============================== - -.. currentmodule:: dpctl - -.. automethod:: SyclQueue.submit_barrier \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.sycl_context.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.sycl_context.rst.txt deleted file mode 100644 index 1b0e246681..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.sycl_context.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclQueue.sycl\_context -============================= - -.. currentmodule:: dpctl - -.. autoattribute:: SyclQueue.sycl_context \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.sycl_device.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.sycl_device.rst.txt deleted file mode 100644 index dd18e65a4a..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.sycl_device.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclQueue.sycl\_device -============================ - -.. currentmodule:: dpctl - -.. autoattribute:: SyclQueue.sycl_device \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.wait.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.wait.rst.txt deleted file mode 100644 index 79046fab42..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclQueue.wait.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclQueue.wait -==================== - -.. currentmodule:: dpctl - -.. automethod:: SyclQueue.wait \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclTimer.__init__.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclTimer.__init__.rst.txt deleted file mode 100644 index fb92f154b0..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclTimer.__init__.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclTimer.\_\_init\_\_ -============================ - -.. currentmodule:: dpctl - -.. automethod:: SyclTimer.__init__ \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclTimer.dt.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclTimer.dt.rst.txt deleted file mode 100644 index 46b807dad4..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.SyclTimer.dt.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.SyclTimer.dt -================== - -.. currentmodule:: dpctl - -.. autoproperty:: SyclTimer.dt \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.__sycl_usm_array_interface__.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.__sycl_usm_array_interface__.rst.txt deleted file mode 100644 index 76a9e0dc7b..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.__sycl_usm_array_interface__.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.memory.MemoryUSMDevice.\_\_sycl\_usm\_array\_interface\_\_ -================================================================ - -.. currentmodule:: dpctl.memory - -.. autoattribute:: MemoryUSMDevice.__sycl_usm_array_interface__ \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.copy_from_device.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.copy_from_device.rst.txt deleted file mode 100644 index 8e9386b01b..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.copy_from_device.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.memory.MemoryUSMDevice.copy\_from\_device -=============================================== - -.. currentmodule:: dpctl.memory - -.. automethod:: MemoryUSMDevice.copy_from_device \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.copy_from_host.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.copy_from_host.rst.txt deleted file mode 100644 index d2a99794b4..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.copy_from_host.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.memory.MemoryUSMDevice.copy\_from\_host -============================================= - -.. currentmodule:: dpctl.memory - -.. automethod:: MemoryUSMDevice.copy_from_host \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.copy_to_host.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.copy_to_host.rst.txt deleted file mode 100644 index 09f8a77ba1..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.copy_to_host.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.memory.MemoryUSMDevice.copy\_to\_host -=========================================== - -.. currentmodule:: dpctl.memory - -.. automethod:: MemoryUSMDevice.copy_to_host \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.get_usm_type.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.get_usm_type.rst.txt deleted file mode 100644 index 7445b6d486..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.get_usm_type.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.memory.MemoryUSMDevice.get\_usm\_type -=========================================== - -.. currentmodule:: dpctl.memory - -.. automethod:: MemoryUSMDevice.get_usm_type \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.get_usm_type_enum.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.get_usm_type_enum.rst.txt deleted file mode 100644 index 65d573b4c9..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.get_usm_type_enum.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.memory.MemoryUSMDevice.get\_usm\_type\_enum -================================================= - -.. currentmodule:: dpctl.memory - -.. automethod:: MemoryUSMDevice.get_usm_type_enum \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.memset.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.memset.rst.txt deleted file mode 100644 index ddfbd4b76e..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.memset.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.memory.MemoryUSMDevice.memset -=================================== - -.. currentmodule:: dpctl.memory - -.. automethod:: MemoryUSMDevice.memset \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.nbytes.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.nbytes.rst.txt deleted file mode 100644 index 9694e8cede..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.nbytes.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.memory.MemoryUSMDevice.nbytes -=================================== - -.. currentmodule:: dpctl.memory - -.. autoattribute:: MemoryUSMDevice.nbytes \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.reference_obj.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.reference_obj.rst.txt deleted file mode 100644 index 36b31a07af..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.reference_obj.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.memory.MemoryUSMDevice.reference\_obj -=========================================== - -.. currentmodule:: dpctl.memory - -.. autoattribute:: MemoryUSMDevice.reference_obj \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.size.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.size.rst.txt deleted file mode 100644 index de16ffeee1..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.size.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.memory.MemoryUSMDevice.size -================================= - -.. currentmodule:: dpctl.memory - -.. autoattribute:: MemoryUSMDevice.size \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.sycl_context.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.sycl_context.rst.txt deleted file mode 100644 index 99dedcc19f..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.sycl_context.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.memory.MemoryUSMDevice.sycl\_context -========================================== - -.. currentmodule:: dpctl.memory - -.. autoattribute:: MemoryUSMDevice.sycl_context \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.sycl_device.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.sycl_device.rst.txt deleted file mode 100644 index 2563644e89..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.sycl_device.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.memory.MemoryUSMDevice.sycl\_device -========================================= - -.. currentmodule:: dpctl.memory - -.. autoattribute:: MemoryUSMDevice.sycl_device \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.sycl_queue.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.sycl_queue.rst.txt deleted file mode 100644 index a869d21474..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.sycl_queue.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.memory.MemoryUSMDevice.sycl\_queue -======================================== - -.. currentmodule:: dpctl.memory - -.. autoattribute:: MemoryUSMDevice.sycl_queue \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.tobytes.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.tobytes.rst.txt deleted file mode 100644 index 6f1dc75caf..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMDevice.tobytes.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.memory.MemoryUSMDevice.tobytes -==================================== - -.. currentmodule:: dpctl.memory - -.. automethod:: MemoryUSMDevice.tobytes \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.__sycl_usm_array_interface__.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.__sycl_usm_array_interface__.rst.txt deleted file mode 100644 index 20bfc2d9b2..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.__sycl_usm_array_interface__.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.memory.MemoryUSMHost.\_\_sycl\_usm\_array\_interface\_\_ -============================================================== - -.. currentmodule:: dpctl.memory - -.. autoattribute:: MemoryUSMHost.__sycl_usm_array_interface__ \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.copy_from_device.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.copy_from_device.rst.txt deleted file mode 100644 index 2897e40783..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.copy_from_device.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.memory.MemoryUSMHost.copy\_from\_device -============================================= - -.. currentmodule:: dpctl.memory - -.. automethod:: MemoryUSMHost.copy_from_device \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.copy_from_host.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.copy_from_host.rst.txt deleted file mode 100644 index ca694b23d0..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.copy_from_host.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.memory.MemoryUSMHost.copy\_from\_host -=========================================== - -.. currentmodule:: dpctl.memory - -.. automethod:: MemoryUSMHost.copy_from_host \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.copy_to_host.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.copy_to_host.rst.txt deleted file mode 100644 index ef54bb6b37..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.copy_to_host.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.memory.MemoryUSMHost.copy\_to\_host -========================================= - -.. currentmodule:: dpctl.memory - -.. automethod:: MemoryUSMHost.copy_to_host \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.get_usm_type.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.get_usm_type.rst.txt deleted file mode 100644 index 119ef25719..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.get_usm_type.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.memory.MemoryUSMHost.get\_usm\_type -========================================= - -.. currentmodule:: dpctl.memory - -.. automethod:: MemoryUSMHost.get_usm_type \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.get_usm_type_enum.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.get_usm_type_enum.rst.txt deleted file mode 100644 index fd8943738d..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.get_usm_type_enum.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.memory.MemoryUSMHost.get\_usm\_type\_enum -=============================================== - -.. currentmodule:: dpctl.memory - -.. automethod:: MemoryUSMHost.get_usm_type_enum \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.memset.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.memset.rst.txt deleted file mode 100644 index 8e18fe151c..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.memset.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.memory.MemoryUSMHost.memset -================================= - -.. currentmodule:: dpctl.memory - -.. automethod:: MemoryUSMHost.memset \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.nbytes.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.nbytes.rst.txt deleted file mode 100644 index aaaf25f6b7..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.nbytes.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.memory.MemoryUSMHost.nbytes -================================= - -.. currentmodule:: dpctl.memory - -.. autoattribute:: MemoryUSMHost.nbytes \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.reference_obj.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.reference_obj.rst.txt deleted file mode 100644 index 0dadc2bcaa..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.reference_obj.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.memory.MemoryUSMHost.reference\_obj -========================================= - -.. currentmodule:: dpctl.memory - -.. autoattribute:: MemoryUSMHost.reference_obj \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.size.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.size.rst.txt deleted file mode 100644 index 47b50208d4..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.size.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.memory.MemoryUSMHost.size -=============================== - -.. currentmodule:: dpctl.memory - -.. autoattribute:: MemoryUSMHost.size \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.sycl_context.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.sycl_context.rst.txt deleted file mode 100644 index 32d35dd438..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.sycl_context.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.memory.MemoryUSMHost.sycl\_context -======================================== - -.. currentmodule:: dpctl.memory - -.. autoattribute:: MemoryUSMHost.sycl_context \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.sycl_device.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.sycl_device.rst.txt deleted file mode 100644 index 49caf0f8dc..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.sycl_device.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.memory.MemoryUSMHost.sycl\_device -======================================= - -.. currentmodule:: dpctl.memory - -.. autoattribute:: MemoryUSMHost.sycl_device \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.sycl_queue.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.sycl_queue.rst.txt deleted file mode 100644 index 77dd9e8adb..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.sycl_queue.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.memory.MemoryUSMHost.sycl\_queue -====================================== - -.. currentmodule:: dpctl.memory - -.. autoattribute:: MemoryUSMHost.sycl_queue \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.tobytes.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.tobytes.rst.txt deleted file mode 100644 index aa2ccfbef2..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMHost.tobytes.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.memory.MemoryUSMHost.tobytes -================================== - -.. currentmodule:: dpctl.memory - -.. automethod:: MemoryUSMHost.tobytes \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.__sycl_usm_array_interface__.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.__sycl_usm_array_interface__.rst.txt deleted file mode 100644 index 8f1fa19852..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.__sycl_usm_array_interface__.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.memory.MemoryUSMShared.\_\_sycl\_usm\_array\_interface\_\_ -================================================================ - -.. currentmodule:: dpctl.memory - -.. autoattribute:: MemoryUSMShared.__sycl_usm_array_interface__ \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.copy_from_device.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.copy_from_device.rst.txt deleted file mode 100644 index a28ee21909..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.copy_from_device.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.memory.MemoryUSMShared.copy\_from\_device -=============================================== - -.. currentmodule:: dpctl.memory - -.. automethod:: MemoryUSMShared.copy_from_device \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.copy_from_host.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.copy_from_host.rst.txt deleted file mode 100644 index cc31055c9f..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.copy_from_host.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.memory.MemoryUSMShared.copy\_from\_host -============================================= - -.. currentmodule:: dpctl.memory - -.. automethod:: MemoryUSMShared.copy_from_host \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.copy_to_host.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.copy_to_host.rst.txt deleted file mode 100644 index 2bdbbe95ce..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.copy_to_host.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.memory.MemoryUSMShared.copy\_to\_host -=========================================== - -.. currentmodule:: dpctl.memory - -.. automethod:: MemoryUSMShared.copy_to_host \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.get_usm_type.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.get_usm_type.rst.txt deleted file mode 100644 index ae98361610..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.get_usm_type.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.memory.MemoryUSMShared.get\_usm\_type -=========================================== - -.. currentmodule:: dpctl.memory - -.. automethod:: MemoryUSMShared.get_usm_type \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.get_usm_type_enum.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.get_usm_type_enum.rst.txt deleted file mode 100644 index 75a51439e0..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.get_usm_type_enum.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.memory.MemoryUSMShared.get\_usm\_type\_enum -================================================= - -.. currentmodule:: dpctl.memory - -.. automethod:: MemoryUSMShared.get_usm_type_enum \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.memset.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.memset.rst.txt deleted file mode 100644 index e259da7717..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.memset.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.memory.MemoryUSMShared.memset -=================================== - -.. currentmodule:: dpctl.memory - -.. automethod:: MemoryUSMShared.memset \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.nbytes.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.nbytes.rst.txt deleted file mode 100644 index 96dcca1a4c..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.nbytes.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.memory.MemoryUSMShared.nbytes -=================================== - -.. currentmodule:: dpctl.memory - -.. autoattribute:: MemoryUSMShared.nbytes \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.reference_obj.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.reference_obj.rst.txt deleted file mode 100644 index 2ee6cf151c..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.reference_obj.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.memory.MemoryUSMShared.reference\_obj -=========================================== - -.. currentmodule:: dpctl.memory - -.. autoattribute:: MemoryUSMShared.reference_obj \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.size.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.size.rst.txt deleted file mode 100644 index 44d15b607f..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.size.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.memory.MemoryUSMShared.size -================================= - -.. currentmodule:: dpctl.memory - -.. autoattribute:: MemoryUSMShared.size \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.sycl_context.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.sycl_context.rst.txt deleted file mode 100644 index afb9052b69..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.sycl_context.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.memory.MemoryUSMShared.sycl\_context -========================================== - -.. currentmodule:: dpctl.memory - -.. autoattribute:: MemoryUSMShared.sycl_context \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.sycl_device.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.sycl_device.rst.txt deleted file mode 100644 index 7a45b43afe..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.sycl_device.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.memory.MemoryUSMShared.sycl\_device -========================================= - -.. currentmodule:: dpctl.memory - -.. autoattribute:: MemoryUSMShared.sycl_device \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.sycl_queue.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.sycl_queue.rst.txt deleted file mode 100644 index 52ff1b2009..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.sycl_queue.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.memory.MemoryUSMShared.sycl\_queue -======================================== - -.. currentmodule:: dpctl.memory - -.. autoattribute:: MemoryUSMShared.sycl_queue \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.tobytes.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.tobytes.rst.txt deleted file mode 100644 index 858b9b297d..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.memory.MemoryUSMShared.tobytes.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.memory.MemoryUSMShared.tobytes -==================================== - -.. currentmodule:: dpctl.memory - -.. automethod:: MemoryUSMShared.tobytes \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor._array_api.Info.capabilities.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor._array_api.Info.capabilities.rst.txt deleted file mode 100644 index 82eb731f6e..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor._array_api.Info.capabilities.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.tensor.\_array\_api.Info.capabilities -=========================================== - -.. currentmodule:: dpctl.tensor._array_api - -.. automethod:: Info.capabilities \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor._array_api.Info.default_device.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor._array_api.Info.default_device.rst.txt deleted file mode 100644 index ee5b4aa4d3..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor._array_api.Info.default_device.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.tensor.\_array\_api.Info.default\_device -============================================== - -.. currentmodule:: dpctl.tensor._array_api - -.. automethod:: Info.default_device \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor._array_api.Info.default_dtypes.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor._array_api.Info.default_dtypes.rst.txt deleted file mode 100644 index f9fa7f12cb..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor._array_api.Info.default_dtypes.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.tensor.\_array\_api.Info.default\_dtypes -============================================== - -.. currentmodule:: dpctl.tensor._array_api - -.. automethod:: Info.default_dtypes \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor._array_api.Info.devices.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor._array_api.Info.devices.rst.txt deleted file mode 100644 index 5c772f366b..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor._array_api.Info.devices.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.tensor.\_array\_api.Info.devices -====================================== - -.. currentmodule:: dpctl.tensor._array_api - -.. automethod:: Info.devices \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor._array_api.Info.dtypes.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor._array_api.Info.dtypes.rst.txt deleted file mode 100644 index 634ec3c005..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor._array_api.Info.dtypes.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.tensor.\_array\_api.Info.dtypes -===================================== - -.. currentmodule:: dpctl.tensor._array_api - -.. automethod:: Info.dtypes \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.T.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.T.rst.txt deleted file mode 100644 index ce2e782f27..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.T.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.tensor.usm\_ndarray.T -=========================== - -.. currentmodule:: dpctl.tensor - -.. autoattribute:: usm_ndarray.T \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.__dlpack__.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.__dlpack__.rst.txt deleted file mode 100644 index a476ea1b3b..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.__dlpack__.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.tensor.usm\_ndarray.\_\_dlpack\_\_ -======================================== - -.. currentmodule:: dpctl.tensor - -.. automethod:: usm_ndarray.__dlpack__ \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.__dlpack_device__.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.__dlpack_device__.rst.txt deleted file mode 100644 index 5261fd9a65..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.__dlpack_device__.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.tensor.usm\_ndarray.\_\_dlpack\_device\_\_ -================================================ - -.. currentmodule:: dpctl.tensor - -.. automethod:: usm_ndarray.__dlpack_device__ \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.__sycl_usm_array_interface__.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.__sycl_usm_array_interface__.rst.txt deleted file mode 100644 index 7057604cf9..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.__sycl_usm_array_interface__.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.tensor.usm\_ndarray.\_\_sycl\_usm\_array\_interface\_\_ -============================================================= - -.. currentmodule:: dpctl.tensor - -.. autoattribute:: usm_ndarray.__sycl_usm_array_interface__ \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray._byte_bounds.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray._byte_bounds.rst.txt deleted file mode 100644 index 6a296a8757..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray._byte_bounds.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.tensor.usm\_ndarray.\_byte\_bounds -======================================== - -.. currentmodule:: dpctl.tensor - -.. autoattribute:: usm_ndarray._byte_bounds \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray._element_offset.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray._element_offset.rst.txt deleted file mode 100644 index 0acbcc6f12..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray._element_offset.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.tensor.usm\_ndarray.\_element\_offset -=========================================== - -.. currentmodule:: dpctl.tensor - -.. autoattribute:: usm_ndarray._element_offset \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray._pointer.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray._pointer.rst.txt deleted file mode 100644 index 17b69a80ed..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray._pointer.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.tensor.usm\_ndarray.\_pointer -=================================== - -.. currentmodule:: dpctl.tensor - -.. autoattribute:: usm_ndarray._pointer \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.device.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.device.rst.txt deleted file mode 100644 index 57764caf7f..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.device.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.tensor.usm\_ndarray.device -================================ - -.. currentmodule:: dpctl.tensor - -.. autoattribute:: usm_ndarray.device \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.dtype.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.dtype.rst.txt deleted file mode 100644 index aa6c354d92..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.dtype.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.tensor.usm\_ndarray.dtype -=============================== - -.. currentmodule:: dpctl.tensor - -.. autoattribute:: usm_ndarray.dtype \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.flags.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.flags.rst.txt deleted file mode 100644 index af0c99bff3..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.flags.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.tensor.usm\_ndarray.flags -=============================== - -.. currentmodule:: dpctl.tensor - -.. autoattribute:: usm_ndarray.flags \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.imag.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.imag.rst.txt deleted file mode 100644 index e01fb8111d..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.imag.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.tensor.usm\_ndarray.imag -============================== - -.. currentmodule:: dpctl.tensor - -.. autoattribute:: usm_ndarray.imag \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.itemsize.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.itemsize.rst.txt deleted file mode 100644 index b4ed0717f5..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.itemsize.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.tensor.usm\_ndarray.itemsize -================================== - -.. currentmodule:: dpctl.tensor - -.. autoattribute:: usm_ndarray.itemsize \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.mT.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.mT.rst.txt deleted file mode 100644 index 1222670e0f..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.mT.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.tensor.usm\_ndarray.mT -============================ - -.. currentmodule:: dpctl.tensor - -.. autoattribute:: usm_ndarray.mT \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.nbytes.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.nbytes.rst.txt deleted file mode 100644 index 6816090203..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.nbytes.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.tensor.usm\_ndarray.nbytes -================================ - -.. currentmodule:: dpctl.tensor - -.. autoattribute:: usm_ndarray.nbytes \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.ndim.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.ndim.rst.txt deleted file mode 100644 index 197396a1a1..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.ndim.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.tensor.usm\_ndarray.ndim -============================== - -.. currentmodule:: dpctl.tensor - -.. autoattribute:: usm_ndarray.ndim \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.real.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.real.rst.txt deleted file mode 100644 index 1f31c4ae1c..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.real.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.tensor.usm\_ndarray.real -============================== - -.. currentmodule:: dpctl.tensor - -.. autoattribute:: usm_ndarray.real \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.shape.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.shape.rst.txt deleted file mode 100644 index a46c0710b3..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.shape.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.tensor.usm\_ndarray.shape -=============================== - -.. currentmodule:: dpctl.tensor - -.. autoattribute:: usm_ndarray.shape \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.size.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.size.rst.txt deleted file mode 100644 index 6ef7707e30..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.size.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.tensor.usm\_ndarray.size -============================== - -.. currentmodule:: dpctl.tensor - -.. autoattribute:: usm_ndarray.size \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.strides.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.strides.rst.txt deleted file mode 100644 index a736497c10..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.strides.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.tensor.usm\_ndarray.strides -================================= - -.. currentmodule:: dpctl.tensor - -.. autoattribute:: usm_ndarray.strides \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.sycl_context.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.sycl_context.rst.txt deleted file mode 100644 index 443b65d45d..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.sycl_context.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.tensor.usm\_ndarray.sycl\_context -======================================= - -.. currentmodule:: dpctl.tensor - -.. autoattribute:: usm_ndarray.sycl_context \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.sycl_device.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.sycl_device.rst.txt deleted file mode 100644 index d735bdbe06..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.sycl_device.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.tensor.usm\_ndarray.sycl\_device -====================================== - -.. currentmodule:: dpctl.tensor - -.. autoattribute:: usm_ndarray.sycl_device \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.sycl_queue.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.sycl_queue.rst.txt deleted file mode 100644 index 34c09e12a2..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.sycl_queue.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.tensor.usm\_ndarray.sycl\_queue -===================================== - -.. currentmodule:: dpctl.tensor - -.. autoattribute:: usm_ndarray.sycl_queue \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.to_device.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.to_device.rst.txt deleted file mode 100644 index 5e42b5e348..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.to_device.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.tensor.usm\_ndarray.to\_device -==================================== - -.. currentmodule:: dpctl.tensor - -.. automethod:: usm_ndarray.to_device \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.usm_data.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.usm_data.rst.txt deleted file mode 100644 index dc628dc0a1..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.usm_data.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.tensor.usm\_ndarray.usm\_data -=================================== - -.. currentmodule:: dpctl.tensor - -.. autoattribute:: usm_ndarray.usm_data \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.usm_type.rst.txt b/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.usm_type.rst.txt deleted file mode 100644 index d461a539ed..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/generated/generated/dpctl.tensor.usm_ndarray.usm_type.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -dpctl.tensor.usm\_ndarray.usm\_type -=================================== - -.. currentmodule:: dpctl.tensor - -.. autoattribute:: usm_ndarray.usm_type \ No newline at end of file diff --git a/pulls/1961/_sources/api_reference/dpctl/index.rst.txt b/pulls/1961/_sources/api_reference/dpctl/index.rst.txt deleted file mode 100644 index 2547bbdf32..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/index.rst.txt +++ /dev/null @@ -1,86 +0,0 @@ -.. _dpctl_pyapi: - -.. currentmodule:: dpctl - -:py:mod:`dpctl` -=============== - -.. py:module:: dpctl - -.. rubric:: Submodules - -.. list-table:: - :widths: 10 50 - - * - :py:mod:`dpctl.memory` - - Unified Shared Memory operations - * - :py:mod:`dpctl.program` - - Support for working with SYCL kernels - * - :py:mod:`dpctl.tensor` - - Array library conforming to Python Array API specification - * - :py:mod:`dpctl.utils` - - A collection of utility functions - -.. rubric:: Classes - -.. autosummary:: - :toctree: generated - :nosignatures: - :template: autosummary/cython_class.rst - - SyclDevice - SyclContext - SyclQueue - SyclEvent - SyclPlatform - SyclTimer - -.. rubric:: Device selection - -.. _dpctl_device_selection_functions: - -.. autosummary:: - :toctree: generated - :nosignatures: - - select_default_device - select_cpu_device - select_gpu_device - select_accelerator_device - select_device_with_aspects - -.. rubric:: Platform discovery - -.. autosummary:: - :toctree: generated - :nosignatures: - - get_devices - lsplatform - get_num_devices - has_gpu_devices - has_cpu_devices - has_accelerator_devices - -.. rubric:: Exceptions - -.. autosummary:: - :toctree: generated - :nosignatures: - - SyclDeviceCreationError - SyclContextCreationError - SyclQueueCreationError - SyclSubDeviceCreationError - -.. rubric:: Utilities - -.. autosummary:: - :toctree: generated - - get_include - -.. toctree:: - :hidden: - - filter_selector_string diff --git a/pulls/1961/_sources/api_reference/dpctl/memory.rst.txt b/pulls/1961/_sources/api_reference/dpctl/memory.rst.txt deleted file mode 100644 index f202b9aafb..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/memory.rst.txt +++ /dev/null @@ -1,72 +0,0 @@ -.. _dpctl_memory_pyapi: - - -:py:mod:`dpctl.memory` -====================== - -Subpackage :py:mod:`dpctl.memory` exposes Unified Shared Memory (USM) operations. - -Unified Shared Memory is a pointer-based memory management in SYCL guaranteeing that -the host and all devices use a `unified address space `_. -As described in the SYCL specification: - -.. _sycl_unified_address_space: https://registry.khronos.org/SYCL/specs/sycl-2020/html/sycl-2020.html#_unified_addressing - - Pointer values in the unified address space will always refer to the same location in memory. - The unified address space encompasses the host and one or more devices. Note that this does - not require addresses in the unified address space to be accessible on all devices, just that - pointer values will be consistent. - -Three types of USM allocations are supported: - -.. list-table:: - :widths: 10 90 - :header-rows: 1 - - * - USM allocation type - - Description - * - ``"device"`` - - Allocations in device memory accessible by the device but **not** by the host - * - ``"shared"`` - - Allocations in device memory accessible by both the host and the device - * - ``"host"`` - - Allocations in host memory accessible by both the host and the device - - -.. py:module:: dpctl.memory - - -.. currentmodule:: dpctl.memory - -.. rubric:: Python classes representing USM allocations - -.. autosummary:: - :toctree: generated - :template: autosummary/usmmemory.rst - :nosignatures: - - MemoryUSMDevice - MemoryUSMShared - MemoryUSMHost - -Python objects representing USM allocations provide ``__sycl_usm_array_interface__`` :ref:`attribute `. -A Python object can be converted to one of these classes using the following function: - -.. autosummary:: - :toctree: generated - :nosignatures: - - as_usm_memory - -Should the USM allocation fail, the following Python exception will be raised: - -.. autosummary:: - :toctree: generated - :nosignatures: - - USMAllocationError - -.. toctree:: - :hidden: - - sycl_usm_array_interface diff --git a/pulls/1961/_sources/api_reference/dpctl/program.rst.txt b/pulls/1961/_sources/api_reference/dpctl/program.rst.txt deleted file mode 100644 index 683d841541..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/program.rst.txt +++ /dev/null @@ -1,37 +0,0 @@ -.. _dpctl_program_pyapi: - -:py:mod:`dpctl.program` -======================= - -:py:mod:`dpctl.program` provides a way to create a SYCL kernel -from either an OpenCL* program source code represented as a string -or a SPIR-V binary file. - -It implements creation of interoperability -``sycl::kernel_bundle`` (a collection of kernels), -as well as creation of individual ``sycl::kernel``, suitable for submission for -execution via :py:meth:`dpctl.SyclQueue.submit`. - -.. py:module:: dpctl.program - -.. currentmodule:: dpctl.program - -.. autosummary:: - :toctree: generated - :nosignatures: - - create_program_from_source - create_program_from_spirv - -.. autosummary:: - :toctree: generated - :nosignatures: - - SyclProgram - SyclKernel - -.. autosummary:: - :toctree: generated - :nosignatures: - - SyclProgramCompilationError diff --git a/pulls/1961/_sources/api_reference/dpctl/sycl_usm_array_interface.rst.txt b/pulls/1961/_sources/api_reference/dpctl/sycl_usm_array_interface.rst.txt deleted file mode 100644 index 5d564f422f..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/sycl_usm_array_interface.rst.txt +++ /dev/null @@ -1,66 +0,0 @@ -.. _suai_attribute: - -``__sycl_usm_array_interface__`` attribute -========================================== - -Python objects representing USM allocations, such as :py:class:`dpctl.memory.MemoryUSMDevice`, -:py:class:`dpctl.memory.MemoryUSMShared`, :py:class:`dpctl.memory.MemoryUSMHost`, -or :py:class:`dpctl.tensor.usm_ndarray`, distinguish themselves from other Python objects -by providing the ``__sycl_usm_array_interface__`` attribute describing the allocation in a -Python dictionary with the following fields: - -``"shape"`` - a tuple of integers describing dimensions of an N-dimensional array - -``"typestr"`` - a string encoding elemental data type of the array. A valid typestring is a subset of - typestrings supported by NumPy's `array interface protocol `_ - corresponding to numeric and boolean data types: - - ===== ================================================================ - ``b`` Boolean (integer type where all values are only ``True`` or - ``False``) - ``i`` Integer - ``u`` Unsigned integer - ``f`` Floating point - ``c`` Complex floating point - ===== ================================================================ - -``"data"`` - A 2-tuple whose first element is a Python integer encoding USM pointer value. - The second entry in the tuple is a read-only flag (``True`` means the data area - is read-only). - -``"strides"`` - An optional tuple of integers describing number of array elements needed to jump - to the next array element in the corresponding dimensions. The default value of ``None`` - implies a C-style contiguous (row-major compact) layout of the array. - -``"offset"`` - An optional Python integer encoding offset in number of elements from the pointer - provided in ``"data"`` field to the array element with zero indices. Default: `0`. - -``"syclobj"`` - Python object from which SYCL context to which represented USM allocation is bound. - - ============================================== ======================================= - Filter selector string The default context of the platform - selected by - :ref:`filter selector string `. - :py:class:`dpctl.SyclContext` An explicitly provided context. - Python capsule with name ``"SyclContextRef"`` A Python capsule carrying a - ``DPCTLSyclContextRef`` opaque pointer. - :py:class:`dpctl.SyclQueue` An explicitly provided queue which - encapsulates context. - Python capsule with name ``"SyclQueueRef"`` A Python capsule carrying a - ``DPCTLSyclQueueRef`` opaque pointer. - Any Python object with method ``_get_capsule`` An object whose method call - ``_get_capsule()`` returns a Python - capsule of the two supported kinds. - ============================================== ======================================= - -``"version"`` - Version of the interface. At present, the only supported value is `1`. - - -.. _numpy_array_interface: https://numpy.org/doc/stable/reference/arrays.interface.html diff --git a/pulls/1961/_sources/api_reference/dpctl/tensor.constants.rst.txt b/pulls/1961/_sources/api_reference/dpctl/tensor.constants.rst.txt deleted file mode 100644 index 2cb9f770d2..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/tensor.constants.rst.txt +++ /dev/null @@ -1,35 +0,0 @@ -.. _dpctl_tensor_constants: - -Constants -======================== - -The following constants are defined in :py:mod:`dpctl.tensor`: - -.. currentmodule:: dpctl.tensor - -.. autodata:: DLDeviceType - -.. data:: e - - ``float``: - IEEE 754 floating-point representation of Euler's constant. - -.. data:: inf - - ``float``: - IEEE 754 floating-point representation of (positive) infinity. - -.. data:: nan - - ``float``: - IEEE 754 floating-point representation of Not a Number (NaN). - -.. data:: newaxis - - ``NoneType``: - Alias for ``None`` which is useful for indexing. - -.. data:: pi - - ``float``: - IEEE 754 floating-point representation of the mathematical constant Ο€. diff --git a/pulls/1961/_sources/api_reference/dpctl/tensor.creation_functions.rst.txt b/pulls/1961/_sources/api_reference/dpctl/tensor.creation_functions.rst.txt deleted file mode 100644 index a9c54bf3f6..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/tensor.creation_functions.rst.txt +++ /dev/null @@ -1,31 +0,0 @@ -.. _dpctl_tensor_creation_functions: - -Array creation functions -======================== - -The following functions in :py:mod:`dpctl.tensor` can be used -to create new arrays: - -.. currentmodule:: dpctl.tensor - -.. autosummary:: - :toctree: generated - - arange - asarray - empty - empty_like - eye - from_dlpack - full - full_like - linspace - meshgrid - ones - ones_like - tril - triu - zeros - zeros_like - from_numpy - copy diff --git a/pulls/1961/_sources/api_reference/dpctl/tensor.data_type_functions.rst.txt b/pulls/1961/_sources/api_reference/dpctl/tensor.data_type_functions.rst.txt deleted file mode 100644 index 7e3f775aec..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/tensor.data_type_functions.rst.txt +++ /dev/null @@ -1,21 +0,0 @@ -.. _dpctl_tensor_data_type_functions: - -Data type functions -=================== - -The package :py:mod:`dpctl.tensor` contains the following data type functions conforming -to `Python Array API specification `_: - -.. _array_api_data_type_fns: https://data-apis.org/array-api/latest/API_specification/data_type_functions.html - -.. currentmodule:: dpctl.tensor - -.. autosummary:: - :toctree: generated - - astype - can_cast - finfo - iinfo - isdtype - result_type diff --git a/pulls/1961/_sources/api_reference/dpctl/tensor.data_types.rst.txt b/pulls/1961/_sources/api_reference/dpctl/tensor.data_types.rst.txt deleted file mode 100644 index 5bd9fa23a9..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/tensor.data_types.rst.txt +++ /dev/null @@ -1,129 +0,0 @@ -.. _dpctl_tensor_data_types: - -.. currentmodule:: dpctl.tensor - -Data types -========== - -:py:mod:`dpctl.tensor` supports the following data types: - -+----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Data Type | Description | -+================+=========================================================================================================================================================================================+ -| ``bool`` | Boolean (``True`` or ``False``) | -+----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ``int8`` | An 8-bit signed integer type capable of representing :math:`v` subject to :math:`-2^7 \le v < 2^7` | -+----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ``int16`` | A 16-bit signed integer type capable of representing :math:`v` subject to :math:`-2^{15} \le v < 2^{15}` | -+----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ``int32`` | A 32-bit signed integer type capable of representing :math:`v` subject to :math:`-2^{31} \le v < 2^{31}` | -+----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ``int64`` | A 64-bit signed integer type capable of representing :math:`v` subject to :math:`-2^{63} \le v < 2^{63}` | -+----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ``uint8`` | An 8-bit unsigned integer type capable of representing :math:`v` subject to :math:`0 \le v < 2^8` | -+----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ``uint16`` | A 16-bit unsigned integer type capable of representing :math:`v` subject to :math:`0 \le v < 2^{16}` | -+----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ``uint32`` | A 32-bit unsigned integer type capable of representing :math:`v` subject to :math:`0 \le v < 2^{32}` | -+----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ``uint64`` | A 64-bit unsigned integer type capable of representing :math:`v` subject to :math:`0 \le v < 2^{64}` | -+----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ``float16`` | An IEEE-754 half-precision (16-bit) binary floating-point number (see `IEEE 754-2019`_) | -+----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ``float32`` | An IEEE-754 single-precision (32-bit) binary floating-point number (see `IEEE 754-2019`_) | -+----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ``float64`` | An IEEE-754 double-precision (64-bit) binary floating-point number (see `IEEE 754-2019`_) | -+----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ``complex64`` | Single-precision (64-bit) complex floating-point number whose real and imaginary components are IEEE 754 single-precision (32-bit) binary floating-point numbers (see `IEEE 754-2019`_) | -+----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ``complex128`` | Double-precision (128-bit) complex floating-point number whose real and imaginary components are IEEE 754 double-precision (64-bit) binary floating-point numbers (see `IEEE 754-2019`_)| -+----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -.. _IEEE 754-2019: https://doi.org/10.1109%2FIEEESTD.2019.8766229 - -Data type support by array object :py:class:`usm_ndarray` depends on capabilities of :class:`dpctl.SyclDevice` where array is allocated. - -Half-precision floating-point type ``float16`` is supported only for devices whose attribute :attr:`dpctl.SyclDevice.has_aspect_fp16` evaluates to ``True``. - -Double-precision floating-point type ``float64`` and double-precision complex floating-point type ``complex128`` are supported only for devices whose attribute :attr:`dpctl.SyclDevice.has_aspect_fp64` -evaluates to ``True``. - -If prerequisites are not met, requests to create an instance of an array object for these types will raise an exception. - -.. TODO: provide a note on support for sub-normal numbers - -Data type objects are instances of :py:class:`dtype` object, and support equality comparison by implementing -special method :meth:`__eq__`. - -.. py:class:: dtype - - Same as :py:class:`numpy.dtype` - - .. py:method:: __eq__ - - Check if data-type instances are equal. - - -Default integral data type --------------------------- - -The default integral data type is :attr:`int64` for all supported devices. - -Default indexing data type --------------------------- - -The default indexing data type is :attr:`int64` for all supported devices. - -Default real floating-point data type -------------------------------------- - -The default real floating-point type depends on the capabilities of device where array is allocated. -If the device support double precision floating-point types, the default real floating-point type -is :attr:`float64`, otherwise :attr:`float32`. - -Make sure to select an appropriately capable device for an application that requires use of double -precision floating-point type. - -Default complex floating-point data type ----------------------------------------- - -Like for the default real floating-point type, the default complex floating-point type depends on -capabilities of device. If the device support double precision real floating-point types, the default -complex floating-point type is :attr:`complex128`, otherwise :attr:`complex64`. - - -Querying default data types programmatically --------------------------------------------- - -The data type can be discovered programmatically using Array API :ref:`inspection functions `: - -.. code-block:: python - - from dpctl - from dpctl import tensor - - device = dpctl.select_default_device() - # get default data types for default-selected device - default_types = tensor.__array_namespace_info__().default_dtypes(device) - int_dt = default_types["integral"] - ind_dt = default_types["indexing"] - rfp_dt = default_types["real floating"] - cfp_dt = default_types["complex floating"] - - -Type promotion rules --------------------- - -Type promotion rules govern the behavior of an array library when a function does not have -a dedicated implementation for the data type(s) of the input array(s). - -In such a case, input arrays may be cast to data types for which a dedicated implementation -exists. For example, when :data:`sin` is applied to array of integral values. - -Type promotion rules used in :py:mod:`dpctl.tensor` are consistent with the -Python Array API specification's `type promotion rules `_ -for devices that support double precision floating-point type. - - -For devices that do not support double precision floating-point type, the type promotion rule is -truncated by removing nodes corresponding to unsupported data types and edges that lead to them. diff --git a/pulls/1961/_sources/api_reference/dpctl/tensor.elementwise_functions.rst.txt b/pulls/1961/_sources/api_reference/dpctl/tensor.elementwise_functions.rst.txt deleted file mode 100644 index 8edf7d5845..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/tensor.elementwise_functions.rst.txt +++ /dev/null @@ -1,85 +0,0 @@ -.. _dpctl_api_elementwise_functions: - -Element-wise functions -====================== - -Element-wise functions applied to input array(s) produce an output array of respective -function values computed for every element of input array(s). - -.. currentmodule:: dpctl.tensor - -.. autosummary:: - :toctree: generated - :template: autosummary/elementwise.rst - - abs - acos - acosh - add - angle - asin - asinh - atan - atan2 - atanh - bitwise_and - bitwise_left_shift - bitwise_invert - bitwise_or - bitwise_right_shift - bitwise_xor - cbrt - ceil - clip - conj - copysign - cos - cosh - divide - equal - exp - exp2 - expm1 - floor - floor_divide - greater - greater_equal - hypot - imag - isfinite - isinf - isnan - less - less_equal - log - log1p - log2 - log10 - logaddexp - logical_and - logical_not - logical_or - logical_xor - maximum - minimum - multiply - negative - nextafter - not_equal - positive - pow - real - remainder - reciprocal - round - rsqrt - sign - signbit - sin - sinh - square - sqrt - subtract - tan - tanh - trunc diff --git a/pulls/1961/_sources/api_reference/dpctl/tensor.indexing_functions.rst.txt b/pulls/1961/_sources/api_reference/dpctl/tensor.indexing_functions.rst.txt deleted file mode 100644 index 8c752b7036..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/tensor.indexing_functions.rst.txt +++ /dev/null @@ -1,19 +0,0 @@ -.. _dpctl_tensor_indexing_functions: - -Indexing functions -================== - -These functions allow to retrieve or modify array elements indexed -by either integral arrays of indices or boolean mask arrays. - -.. currentmodule:: dpctl.tensor - -.. autosummary:: - :toctree: generated - - extract - place - put - put_along_axis - take - take_along_axis diff --git a/pulls/1961/_sources/api_reference/dpctl/tensor.inspection.rst.txt b/pulls/1961/_sources/api_reference/dpctl/tensor.inspection.rst.txt deleted file mode 100644 index 75d659cf88..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/tensor.inspection.rst.txt +++ /dev/null @@ -1,21 +0,0 @@ -.. _dpctl_tensor_inspection: - -Inspection API -============== - - -:mod:`dpctl.tensor` implements a way to introspect implementation- and device- -capabilities of an array library as specified in -`Python Array API standard `_: - -.. currentmodule:: dpctl.tensor - -.. _array_api_inspection: https://data-apis.org/array-api/latest/API_specification/inspection.html - -.. autosummary:: - :toctree: generated - :template: autosummary/cython_class.rst - - __array_api_version__ - __array_namespace_info__ - _array_api.Info diff --git a/pulls/1961/_sources/api_reference/dpctl/tensor.linear_algebra.rst.txt b/pulls/1961/_sources/api_reference/dpctl/tensor.linear_algebra.rst.txt deleted file mode 100644 index 0204c7c40b..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/tensor.linear_algebra.rst.txt +++ /dev/null @@ -1,14 +0,0 @@ -.. _dpctl_tensor_linear_algebra: - -Linear algebra functions -======================== - -.. currentmodule:: dpctl.tensor - -.. autosummary:: - :toctree: generated - - matmul - matrix_transpose - tensordot - vecdot diff --git a/pulls/1961/_sources/api_reference/dpctl/tensor.manipulation_functions.rst.txt b/pulls/1961/_sources/api_reference/dpctl/tensor.manipulation_functions.rst.txt deleted file mode 100644 index f62df46af8..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/tensor.manipulation_functions.rst.txt +++ /dev/null @@ -1,28 +0,0 @@ -.. _dpctl_tensor_manipulation_functions: - -Array manipulation functions -============================ - -The following functions conform to `Python Array API standard `_: - -.. array_api_spec_manipulation_functions: https://data-apis.org/array-api/latest/API_specification/manipulation_functions.html - -.. currentmodule:: dpctl.tensor - -.. autosummary:: - :toctree: generated - - broadcast_arrays - broadcast_to - concat - expand_dims - flip - moveaxis - permute_dims - repeat - reshape - roll - squeeze - stack - tile - unstack diff --git a/pulls/1961/_sources/api_reference/dpctl/tensor.rst.txt b/pulls/1961/_sources/api_reference/dpctl/tensor.rst.txt deleted file mode 100644 index 10e1f65d9f..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/tensor.rst.txt +++ /dev/null @@ -1,52 +0,0 @@ -.. _dpctl_tensor_pyapi: - -:py:mod:`dpctl.tensor` -====================== - -.. py:module:: dpctl.tensor - -.. currentmodule:: dpctl.tensor - -:py:mod:`dpctl.tensor` provides a reference implementation of the -:array_api:`Python Array API <>` specification. The implementation -uses :ref:`data-parallel ` algorithms suitable for execution on accelerators, -such as GPUs. - -:py:mod:`dpctl.tensor` is written using C++ and :sycl_spec_2020:`SYCL <>` -and oneAPI extensions implemented in :dpcpp_compiler:`Intel(R) oneAPI DPC++ compiler <>`. - -This module contains: - -* Array object :py:class:`usm_ndarray` -* :ref:`array creation functions ` -* :ref:`array manipulation functions ` -* :ref:`elementwise functions ` -* :ref:`indexing functions ` -* :ref:`introspection functions ` -* :ref:`linear algebra functions ` -* :ref:`searching functions ` -* :ref:`set functions ` -* :ref:`sorting functions ` -* :ref:`statistical functions ` -* :ref:`utility functions ` -* :ref:`constants ` - - -.. toctree:: - :hidden: - - tensor.creation_functions - tensor.usm_ndarray - tensor.data_type_functions - tensor.data_types - tensor.elementwise_functions - tensor.indexing_functions - tensor.inspection - tensor.linear_algebra - tensor.manipulation_functions - tensor.searching_functions - tensor.set_functions - tensor.sorting_functions - tensor.statistical_functions - tensor.utility_functions - tensor.constants diff --git a/pulls/1961/_sources/api_reference/dpctl/tensor.searching_functions.rst.txt b/pulls/1961/_sources/api_reference/dpctl/tensor.searching_functions.rst.txt deleted file mode 100644 index 5a784c4c1c..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/tensor.searching_functions.rst.txt +++ /dev/null @@ -1,16 +0,0 @@ -.. _dpctl_tensor_searching_functions: - -Searching functions -=================== - -.. currentmodule:: dpctl.tensor - -.. autosummary:: - :toctree: generated - - argmax - argmin - count_nonzero - nonzero - searchsorted - where diff --git a/pulls/1961/_sources/api_reference/dpctl/tensor.set_functions.rst.txt b/pulls/1961/_sources/api_reference/dpctl/tensor.set_functions.rst.txt deleted file mode 100644 index 8c19196072..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/tensor.set_functions.rst.txt +++ /dev/null @@ -1,14 +0,0 @@ -.. _dpctl_tensor_set_functions: - -Set Functions -============= - -.. currentmodule:: dpctl.tensor - -.. autosummary:: - :toctree: generated - - unique_all - unique_counts - unique_inverse - unique_values diff --git a/pulls/1961/_sources/api_reference/dpctl/tensor.sorting_functions.rst.txt b/pulls/1961/_sources/api_reference/dpctl/tensor.sorting_functions.rst.txt deleted file mode 100644 index ef20f4654c..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/tensor.sorting_functions.rst.txt +++ /dev/null @@ -1,13 +0,0 @@ -.. _dpctl_tensor_sorting_functions: - -Sorting functions -================= - -.. currentmodule:: dpctl.tensor - -.. autosummary:: - :toctree: generated - - argsort - sort - top_k diff --git a/pulls/1961/_sources/api_reference/dpctl/tensor.statistical_functions.rst.txt b/pulls/1961/_sources/api_reference/dpctl/tensor.statistical_functions.rst.txt deleted file mode 100644 index ef5419daf4..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/tensor.statistical_functions.rst.txt +++ /dev/null @@ -1,19 +0,0 @@ -.. _dpctl_tensor_statistical_functions: - -Statistical Functions -===================== - -.. currentmodule:: dpctl.tensor - -.. autosummary:: - :toctree: generated - - max - mean - min - prod - std - sum - var - logsumexp - reduce_hypot diff --git a/pulls/1961/_sources/api_reference/dpctl/tensor.usm_ndarray.rst.txt b/pulls/1961/_sources/api_reference/dpctl/tensor.usm_ndarray.rst.txt deleted file mode 100644 index 0c71dac607..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/tensor.usm_ndarray.rst.txt +++ /dev/null @@ -1,30 +0,0 @@ -.. _dpctl_tensor_array_object: - -USM array object -================ - -.. currentmodule:: dpctl.tensor - -The array object represents a multi-dimensional tensor of uniform elemental datatype allocated on -a :py:class:`Device`. The tensor in stored in a USM allocation, which can be accessed via -:py:attr:`usm_ndarray.base` attribute. - -Implementation of :py:class:`usm_ndarray` conforms to -`Array API standard `_ specification. - -.. array_api_array_object: https://data-apis.org/array-api/latest/API_specification/array_object.html - -.. autosummary:: - :toctree: generated - :template: autosummary/usm_ndarray.rst - - usm_ndarray - -.. _dpctl_tensor_usm_ndarray_to_device_example: - -.. include:: examples/usm_ndarray.rst - -.. toctree:: - :hidden: - - flags diff --git a/pulls/1961/_sources/api_reference/dpctl/tensor.utility_functions.rst.txt b/pulls/1961/_sources/api_reference/dpctl/tensor.utility_functions.rst.txt deleted file mode 100644 index adbd3cf285..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/tensor.utility_functions.rst.txt +++ /dev/null @@ -1,25 +0,0 @@ -.. _dpctl_tensor_utility_functions: - -Utility functions -================= - -.. currentmodule:: dpctl.tensor - -.. autosummary:: - :toctree: generated - - all - any - allclose - diff - -Device object -------------- - -.. autoclass:: Device - - .. autosummary:: - ~create_device - ~sycl_queue - ~sycl_device - ~sycl_context diff --git a/pulls/1961/_sources/api_reference/dpctl/utils.rst.txt b/pulls/1961/_sources/api_reference/dpctl/utils.rst.txt deleted file mode 100644 index b9fdad5051..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl/utils.rst.txt +++ /dev/null @@ -1,20 +0,0 @@ -.. _dpctl_utils_pyapi: - -:py:mod:`dpctl.utils` -===================== - -.. py:module:: dpctl.utils - -.. currentmodule:: dpctl.utils - -.. autofunction:: get_execution_queue - -.. autofunction:: get_coerced_usm_type - -.. autofunction:: validate_usm_type - -.. autofunction:: onetrace_enabled - -.. autofunction:: intel_device_info - -.. autoexception:: ExecutionPlacementError diff --git a/pulls/1961/_sources/api_reference/dpctl_capi.rst.txt b/pulls/1961/_sources/api_reference/dpctl_capi.rst.txt deleted file mode 100644 index 382859efd8..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl_capi.rst.txt +++ /dev/null @@ -1,309 +0,0 @@ -.. _dpctl_capi: - -:py:mod:`dpctl` C API -===================== - -:py:mod:`dpctl` core classes are implemented in Cython. C declarations for Python objects -corresponding to these classes, as well as their Python types are generated by Cython. - -Exported typedefs ------------------ - -.. c:struct:: PySyclDeviceObject - -.. c:struct:: PySyclDeviceType - -.. c:struct:: PySyclContextObject - -.. c:struct:: PySyclContextType - -.. c:struct:: PySyclQueueObject - -.. c:struct:: PySyclQueueType - -.. c:struct:: PySyclEventObject - -.. c:struct:: PySyclEventType - -.. c:struct:: Py_MemoryObject - -.. c:struct:: Py_MemoryType - -.. c:struct:: PyUSMArrayObject - -.. c:struct:: PyUSMArrayType - -.. c:struct:: PySyclKernelObject - -.. c:struct:: PySyclKernelType - -.. c:struct:: PySyclProgramObject - -.. c:struct:: PySyclProgramType - -To check whether a particular Python object is an instance of :py:class:`dpctl.SyclQueue`: - -.. code-block:: C - :caption: Check if an object is of type :c:struct:`PySyclQueueType` - - #include "Python.h" - #include "dpctl_capi.h" - - int PySyclQueue_Check(PyObject *o) { - return PyObject_TypeCheck(o, &PySyclQueueType); - } - -API for :c:struct:`PySyclDeviceObject` --------------------------------------- - -.. c:function:: DPCTLSyclDeviceRef SyclDevice_GetDeviceRef(struct PySyclDeviceObject *o) - - :param o: Input object - :returns: borrowed instance of :c:struct:`DPCTLSyclDeviceRef` - -.. c:function:: struct PySyclDeviceObject * SyclDevice_Make(DPCTLSyclDeviceRef DRef) - - :param DRef: instance of :c:struct:`DPCTLSyclDeviceRef` - :returns: new Python object of type :c:struct:`PySyclDeviceType` - - Note that function does not change the ownership of the ``DRef`` instance and - the caller remains responsible for freeing ``DRef`` as appropriate. - -API for :c:struct:`PySyclContextObject` ---------------------------------------- - -.. c:function:: DPCTLSyclContextRef SyclContext_GetContextRef(struct PySyclContextObject *o) - - :param o: Input object - :returns: borrowed instance of :c:struct:`DPCTLSyclContextRef` - -.. c:function:: struct PySyclContextObject * SyclContext_Make(DPCTLSyclContextRef CRef) - - :param CRef: instance of :c:struct:`DPCTLSyclContextRef` - :returns: new Python object of type :c:struct:`PySyclContextType` - - Note that function does not change the ownership of the ``CRef`` instance and - the caller remains responsible for freeing ``CRef`` as appropriate. - -API for :c:struct:`PySyclQueueObject` -------------------------------------- - -.. c:function:: DPCTLSyclQueueRef SyclQueue_GetQueueRef(struct PySyclQueueObject *o) - - :param o: Input object - :returns: borrowed instance of :c:struct:`DPCTLSyclQueueRef` - -.. c:function:: struct PySyclQueueObject * SyclQueue_Make(DPCTLSyclQueueRef QRef) - - :param QRef: instance of :c:struct:`DPCTLSyclQueueRef` - :returns: new Python object of type :c:struct:`PySyclQueueType` - - Note that function does not change the ownership of the ``QRef`` instance and - the caller remains responsible for freeing ``QRef`` as appropriate. - -API for :c:struct:`PySyclEventObject` -------------------------------------- - -.. c:function:: DPCTLSyclEventRef SyclEvent_GetEventRef(struct PySyclEventObject *o) - - :param o: Input object - :returns: borrowed instance of :c:struct:`DPCTLSyclEventRef` - -.. c:function:: struct PySyclEventObject * SyclEvent_Make(DPCTLSyclEventRef ERef) - - :param ERef: instance of :c:struct:`DPCTLSyclEventRef` - :returns: new Python object of type :c:struct:`PySyclEventType` - - Note that function does not change the ownership of the ``ERef`` instance and - the caller remains responsible for freeing ``ERef`` as appropriate. - -API for :c:struct:`Py_MemoryObject` ------------------------------------ - -.. c:function:: DPCTLSyclUSMRef Memory_GetUsmPointer(struct Py_MemoryObject *o) - - :param o: Input object - :returns: Opaque pointer to USM allocation represented by Python object. - -.. c:function:: DPCTLSyclContextRef Memory_GetSyclContext(struct Py_MemoryObject *o) - - :param o: Input object - :returns: Returns borrowed instance of :c:struct:`PySyclContextRef` corresponding - to ``sycl::context`` to which USM allocation represented by input Python object - is bound. - -.. c:function:: DPCTLSyclQueueRef Memory_GetSyclQueue(struct Py_MemoryObject *o) - - :param o: Input object - :returns: Returns borrowed instance of :c:struct:`PySyclQueueRef` corresponding - to ``sycl::queue`` associated with input Python object. - - The ``sycl::queue`` uses the same ``sycl::context`` to which the USM allocation - represented by input Python object is bound. - -.. c:function:: size_t Memory_GetNumBytes(struct Py_MemoryObject *o) - - :param o: Input object - :returns: Size of USM allocation in bytes. - -.. c:function:: struct Py_MemoryObject * Memory_Make(DPCTLSyclUSMRef ptr, size_t nbytes, DPCTLSyclQueueRef QRef, PyObject *owner) - - :param ptr: Opaque pointer in unified address space - :param nbytes: The size of allocation in bytes - :param QRef: instance of :c:struct:`PySyclQueueRef` corresponding - to ``sycl::queue`` to be associated with this allocation - :param owner: Python object instance whose deleter triggers freeing of this USM allocation. Specify `owner=None` - to pass ownership to created Python memory object, which will use ``sycl::free(ptr, sycl_queue)`` for - deallocation. - -.. c:function:: void * Memory_GetOpaquePointer(struct Py_MemoryObject *o) - - :param o: Input object - :returns: Returns opaque pointer to `std::shared_ptr` which manages the USM allocation, - or a `nullptr` if the USM allocation represented by `o` is not managed by the smart - pointer. - -API for :c:struct:`PyUSMArrayObject` ------------------------------------- - -.. c:function:: char * UsmNDArray_GetData(struct PyUSMArrayObject *arr) - - :param arr: Input object - :returns: Pointer to array element referred to by all-zeros multi-index. - -.. c:function:: int UsmNDArray_GetNDim(struct PyUSMArrayObject *arr) - - :param arr: Input object - :returns: Number of indices required to uniquely specify element of this array - - The returned value is also known as array dimensionality or array rank. - -.. c:function:: Py_ssize_t * UsmNDArray_GetShape(struct PyUSMArrayObject *arr) - - :param arr: Input object - :returns: Pointer to array of sizes of array along each dimension. - - The array has at least as many elements as returned by :c:func:`UsmNDArray_GetNDim` - applied to input object ``arr``. - -.. c:function:: Py_ssize_t * UsmNDArray_GetStrides(struct PyUSMArrayObject *arr) - - :param arr: Input object - :returns: Pointer to array of strides of array along each dimension. - :returns: NULL if array is C- or F-contiguous. - - The array has at least as many elements as returned by :c:func:`UsmNDArray_GetNDim` - applied to input object ``arr``. - -.. c:function:: int UsmNDarray_GetTypenum(struct PyUSMArrayObject *arr) - - :param arr: Input object - :returns: An integer encoding the type of array elements. - - The encoding is consistent with that integral values corresponding to enums - used by :py:mod:`numpy`. See `NumPy Dtype C-API `_. - -.. c:function:: int UsmNDarray_GetElementSize(struct PyUSMArrayObject *arr) - - :param arr: Input object - :returns: Size of single element of the array in bytes. - -.. c:function:: int UsmNDarray_GetFlags(struct PyUSMArrayObject *arr) - - :param arr: Input object - :returns: An integer encoding flags attribute of the array. - - The flag encodes whether the array is C-contiguous, F-contiguous, - whether it is read-only, or can be modified. - -.. c:function:: DPCTLSyclQueueRef UsmNDarray_GetQueueRef(struct PyUSMArrayObject *arr) - - :param arr: Input object - :returns: A borrowed instance of :c:struct:`DPCTLSyclQueueRef` - - The returned value corresponds to ``sycl::queue`` associated with underlying - USM allocation. - -.. c:function:: Py_ssize_t UsmNDArray_GetOffset(struct PyUSMArrayObject *arr) - - :param arr: Input object - :returns: Offset of zero multi-index array element from the beginning of - the USM allocation. - -.. c:function:: PyObject * UsmNDArray_GetUSMData(struct PyUSMArrayObject *arr) - - :param arr: Input object - :returns: Python memory object underlying input array `arr`. - -.. c:function:: void UsmNDArray_SetWritableFlag(struct PyUSMArrayObject *arr, int flag) - - :param arr: Input object - :param flags: Whether to set writable flag of the array to read-only, or to writable. - - Non-zero value of ``flag`` parameter sets the array flag bit to writable, a zero-value - of ``flag`` parameter sets the flag bit of the array to read-only. - -.. c:function:: PyObject * UsmNDArray_MakeSimpleFromMemory(int nd, const Py_ssize_t *shape, int typenum, struct Py_MemoryObject *mobj, Py_ssize_t offset, char order) - - :param nd: Dimensionality of array - :param shape: Array with array sizes for each dimension - :param typenum: Integer encoding type of array elements - :param mobj: Python USM memory object - :param offset: Offset to zero multi-index array element from the beginning of USM allocation - :param order: Memory layout of the array ('C' for C-contiguous or row-major layout, 'F' for F-contiguous or column-major layout) - :returns: :py:class:`usm_ndarray` instance with contiguous memory layout. - -.. c:function:: PyObject * UsmNDArray_MakeSimpleFromPtr(size_t nelems, int typenum, DPCTLSyclUSMRef ptr, DPCTLSyclQueueRef QRef, PyObject *owner) - - :param nelems: Number of elements in one-dimensional array - :param typenum: Integer encoding type of array elements - :param ptr: Opaque pointer to USM allocation - :param QRef: Instance representing ``sycl::queue`` to be associated with output array - :param owner: Python object responsible for deallocation of USM memory - :return: One-dimensional :py:class:`usm_ndarray` instance with contiguous memory layout. - -.. c:function:: PyObject * UsmNDArray_MakeFromPtr(int nd, const Py_ssize_t *shape, int typenum, const Py_ssize_t *strides, DPCTLSyclUSMRef ptr, DPCTLSyclQueueRef QRef, Py_ssize_t offset, PyObject *owner) - - :param nd: Number of axis in output array - :param shape: Array of dimensional along each axis - :param typenum: Integer encoding type of array elements - :param stride: Array of strides for each axis - :param ptr: Opaque pointer to USM allocation - :param QRef: Instance representing ``sycl::queue`` to be associated with output array - :param offset: Offset to zero multi-index array element from the beginning of USM allocation - :param owner: Python object responsible for deallocation of USM memory - :returns: Instance of :py:class:`usm_ndarray` constructed from input parameters - -API for :c:struct:`PySyclKernelObject` --------------------------------------- - -.. c:function:: DPCTLSyclKernelRef SyclKernel_GetKernelRef(struct PySyclKernelObject *krn) - - :param krn: Input object - :returns: borrowed instance of :c:struct:`DPCTLSyclKernelRef` corresponding to ``sycl::kernel`` - -.. c:function:: struct PySyclKernelObject * SyclKernel_Make(DPCTLSyclKernelRef KRef) - - :param KRef: instance of :c:struct:`DPCTLSyclKernelRef` - :returns: new Python object of type :c:struct:`PySyclKernelType` - - Note that function does not change the ownership of the ``KRef`` instance and - the caller remains responsible for freeing ``KRef`` as appropriate. - - -API for :c:struct:`PySyclProgramObject` ---------------------------------------- - -.. c:function:: DPCTLSyclKernelBundleRef SyclProgram_GetKernelBundleRef(struct PySyclProgramObject *prog) - - :param prog: Input object - :returns: borrowed instance of :c:struct:`DPCTLSyclKernelBundleRef` corresponding - to ``sycl::kernel_bundle`` - -.. c:function:: struct PySyclProgramObject * SyclProgram_Make(DPCTLSyclKernelBundleRef KBRef) - - :param KBRef: instance of :c:struct:`DPCTLSyclKernelBundleRef` - :returns: new Python object of type :c:struct:`PySyclProgramType` - - Note that function does not change the ownership of the ``KBRef`` instance and - the caller remains responsible for freeing ``KBRef`` as appropriate. diff --git a/pulls/1961/_sources/api_reference/dpctl_cmake.rst.txt b/pulls/1961/_sources/api_reference/dpctl_cmake.rst.txt deleted file mode 100644 index 2bbb9c03e4..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl_cmake.rst.txt +++ /dev/null @@ -1,31 +0,0 @@ -.. _dpctl_cmake_support: - -CMake support -============= - -:py:mod:`dpctl` comes with the configuration file `dpctl-config.cmake` which is installed -on the `standard search path CMake uses to search for packages `_. - -To build your extension that leverages :py:mod:`dpctl`, include the following line in your CMake script: - -.. code-block:: cmake - - find_package("Dpctl" REQUIRED) - -The "Dpctl" package exports the following variables: - -.. list-table:: - - * - ``Dpctl_INCLUDE_DIR`` - - Location of headers for using :py:mod:`dpctl` in extensions - - * - ``Dpctl_TENSOR_INCLUDE_DIR`` - - Location of headers implementing SYCL kernels powering :py:mod:`dpctl.tensor` - -An example of "CMakeLists.txt" file for building an extension could be found in -`examples/pybind11 `_ folder in the project repository, or -in `sample-data-parallel-extensions `_ repository. - -.. _cmake_find_package_search_paths: https://cmake.org/cmake/help/latest/command/find_package.html -.. _examples_pybind11: https://github.com/IntelPython/dpctl/blob/master/examples/pybind11 -.. _sample_dp_exts: https://github.com/IntelPython/sample-data-parallel-extensions diff --git a/pulls/1961/_sources/api_reference/dpctl_cython.rst.txt b/pulls/1961/_sources/api_reference/dpctl_cython.rst.txt deleted file mode 100644 index ecafe7966a..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl_cython.rst.txt +++ /dev/null @@ -1,42 +0,0 @@ -.. _dpctl_cython_api: - -:py:mod:`dpctl` Cython API -========================== - -.. role:: python(code) - :language: python - -All Python modules of :py:mod:`dpctl` come with ``__init__.pxd`` alongside ``__init__.py`` files -permitting doing both :python:`import dpctl` and :code:`cimport dpctl as c_dpctl`. - -Locations of Cython declaration files in the package installation layout are as follows: - -.. code-block:: text - - __init__.pxd - _backend.pxd - _sycl_context.pxd - _sycl_device.pxd - _sycl_device_factory.pxd - _sycl_event.pxd - _sycl_platform.pxd - _sycl_queue.pxd - _sycl_queue_manager.pxd - sycl.pxd - - memory/__init__.pxd - memory/_memory.pxd - - program/__init__.pxd - program/_program.pxd - - tensor/__init__.pxd - tensor/_usmarray.pxd - tensor/_dlpack.pxd - -File ``_backend.pxd`` redefines symbols from :ref:`DPCTLSyclInterface library ` for Cython. - -File ``sycl.pxd`` provides casters from opaque types in "DPCTLSyclInterface" C library to SYCL C++ object pointers. - -Please refer to the `examples/cython `_ folder in the project -repository for a collection of examples. diff --git a/pulls/1961/_sources/api_reference/dpctl_pybind11.rst.txt b/pulls/1961/_sources/api_reference/dpctl_pybind11.rst.txt deleted file mode 100644 index 32c587ef96..0000000000 --- a/pulls/1961/_sources/api_reference/dpctl_pybind11.rst.txt +++ /dev/null @@ -1,47 +0,0 @@ -.. _dpctl_pybind11_api: - -pybind11 API -============ - -:py:mod:`dpctl` builds on top of :ref:`C API ` to integrate with the -`pybind11 `_ Python extension generator. - -.. code-block:: c++ - :caption: Example of pybind11 extension using :py:mod:`dpctl` types - - // filename: _example.cpp - #include - #include - #include - #include "dpctl4pybind11.hpp" - - std::string get_device_name(const sycl::device &dev) { - return dev.get_info(); - } - - PYBIND11_MODULE(_example, m) { - m.def("get_device_name", &get_device_name); - } - -The extension should be compiled using the Intel(R) oneAPI DPC++ compiler: - -.. code-block:: bash - - icpx -fsycl $(python -m pybind11 --includes) $(python -m dpctl --library) \ - _example.cpp -fPIC -shared -o _example.so - -We can now use it from Python: - -.. code-block:: python - - import _example - import dpctl - - dev = dpctl.select_default_device() - # invoke function in the extension - print(_example.get_device_name(dev)) - # compare with value of corresponding built-in - # device descriptor - print(dev.name) - -.. _pybind11_url: https://pybind11.readthedocs.io/ diff --git a/pulls/1961/_sources/api_reference/index.rst.txt b/pulls/1961/_sources/api_reference/index.rst.txt deleted file mode 100644 index a9148d953a..0000000000 --- a/pulls/1961/_sources/api_reference/index.rst.txt +++ /dev/null @@ -1,43 +0,0 @@ -.. _api_reference: - -============= -API Reference -============= - -The package ``dpctl`` provides - -* Python language bindings for the DPC++ runtime - - :ref:`API objects ` in :py:mod:`dpctl` namespace - - :ref:`API objects ` in :py:mod:`dpctl.memory` namespace - - :ref:`API objects ` in :py:mod:`dpctl.program` namespace - - :ref:`API objects ` in :py:mod:`dpctl.utils` namespace -* SYCL-based Python array library - - :ref:`API objects ` in :py:mod:`dpctl.tensor` namespace -* Python C API - - :ref:`C API ` for working with Python classes defined in :mod:`dpctl` -* Extension generators - - :ref:`Declarations ` for classes defined in :py:mod:`dpctl` and supporting functions for use in `Cython `_. - - :ref:`Integration ` with `pybind11 `_ defines type casters connecting SYCL classes and Python classes, as well as defines C++ classes wrapping a Python object for :class:`dpctl.tensor.usm_ndarray` and :mod:`dpctl.memory` objects. - - :ref:`Integration ` with `CMake `_ to simplify building DPC++-based Python extension using `scikit-build `_. -* C API for DPC++ runtime - - :doc:`DPCTLSyclInterface C library ` - - -.. _cmake_docs: https://cmake.org/documentation/ -.. _cython_docs: https://cython.readthedocs.io/en/latest/ -.. _skbuild_docs: https://scikit-build.readthedocs.io/en/latest/ -.. _pybind11_docs: https://pybind11.readthedocs.io/en/stable/ - -.. toctree:: - :hidden: - - dpctl/index - dpctl/memory - dpctl/program - dpctl/utils - dpctl/tensor - libsyclinterface/index - dpctl_capi - dpctl_cython - dpctl_pybind11 - dpctl_cmake diff --git a/pulls/1961/_sources/api_reference/libsyclinterface/generated/class_dpctl_syclinterface_dpctl_accelerator_selector.rst.txt b/pulls/1961/_sources/api_reference/libsyclinterface/generated/class_dpctl_syclinterface_dpctl_accelerator_selector.rst.txt deleted file mode 100644 index ac3953eb51..0000000000 --- a/pulls/1961/_sources/api_reference/libsyclinterface/generated/class_dpctl_syclinterface_dpctl_accelerator_selector.rst.txt +++ /dev/null @@ -1,44 +0,0 @@ -.. index:: pair: class; dpctl::syclinterface::dpctl_accelerator_selector -.. _doxid-de/d9f/classdpctl_1_1syclinterface_1_1dpctl__accelerator__selector: - -class dpctl::syclinterface::dpctl_accelerator_selector -====================================================== - -.. toctree:: - :hidden: - - - - -.. ref-code-block:: cpp - :class: doxyrest-overview-code-block - - #include - - class dpctl_accelerator_selector: public :ref:`dpctl::syclinterface::dpctl_device_selector` - { - public: - // methods - - virtual - int - :target:`operator ()` (const sycl::device& d) const; - }; - -Inherited Members ------------------ - -.. ref-code-block:: cpp - :class: doxyrest-overview-inherited-code-block - - public: - // fields - - static constexpr int :ref:`REJECT_DEVICE` = -1; - - // methods - - virtual - int - :ref:`operator ()` (const sycl::device&) const; - diff --git a/pulls/1961/_sources/api_reference/libsyclinterface/generated/class_dpctl_syclinterface_dpctl_cpu_selector.rst.txt b/pulls/1961/_sources/api_reference/libsyclinterface/generated/class_dpctl_syclinterface_dpctl_cpu_selector.rst.txt deleted file mode 100644 index 17cd200399..0000000000 --- a/pulls/1961/_sources/api_reference/libsyclinterface/generated/class_dpctl_syclinterface_dpctl_cpu_selector.rst.txt +++ /dev/null @@ -1,44 +0,0 @@ -.. index:: pair: class; dpctl::syclinterface::dpctl_cpu_selector -.. _doxid-d4/d09/classdpctl_1_1syclinterface_1_1dpctl__cpu__selector: - -class dpctl::syclinterface::dpctl_cpu_selector -============================================== - -.. toctree:: - :hidden: - - - - -.. ref-code-block:: cpp - :class: doxyrest-overview-code-block - - #include - - class dpctl_cpu_selector: public :ref:`dpctl::syclinterface::dpctl_device_selector` - { - public: - // methods - - virtual - int - :target:`operator ()` (const sycl::device& d) const; - }; - -Inherited Members ------------------ - -.. ref-code-block:: cpp - :class: doxyrest-overview-inherited-code-block - - public: - // fields - - static constexpr int :ref:`REJECT_DEVICE` = -1; - - // methods - - virtual - int - :ref:`operator ()` (const sycl::device&) const; - diff --git a/pulls/1961/_sources/api_reference/libsyclinterface/generated/class_dpctl_syclinterface_dpctl_default_selector.rst.txt b/pulls/1961/_sources/api_reference/libsyclinterface/generated/class_dpctl_syclinterface_dpctl_default_selector.rst.txt deleted file mode 100644 index 72a332591c..0000000000 --- a/pulls/1961/_sources/api_reference/libsyclinterface/generated/class_dpctl_syclinterface_dpctl_default_selector.rst.txt +++ /dev/null @@ -1,44 +0,0 @@ -.. index:: pair: class; dpctl::syclinterface::dpctl_default_selector -.. _doxid-dd/d0e/classdpctl_1_1syclinterface_1_1dpctl__default__selector: - -class dpctl::syclinterface::dpctl_default_selector -================================================== - -.. toctree:: - :hidden: - - - - -.. ref-code-block:: cpp - :class: doxyrest-overview-code-block - - #include - - class dpctl_default_selector: public :ref:`dpctl::syclinterface::dpctl_device_selector` - { - public: - // methods - - virtual - int - :target:`operator ()` (const sycl::device& d) const; - }; - -Inherited Members ------------------ - -.. ref-code-block:: cpp - :class: doxyrest-overview-inherited-code-block - - public: - // fields - - static constexpr int :ref:`REJECT_DEVICE` = -1; - - // methods - - virtual - int - :ref:`operator ()` (const sycl::device&) const; - diff --git a/pulls/1961/_sources/api_reference/libsyclinterface/generated/class_dpctl_syclinterface_dpctl_device_selector.rst.txt b/pulls/1961/_sources/api_reference/libsyclinterface/generated/class_dpctl_syclinterface_dpctl_device_selector.rst.txt deleted file mode 100644 index 4537533e5e..0000000000 --- a/pulls/1961/_sources/api_reference/libsyclinterface/generated/class_dpctl_syclinterface_dpctl_device_selector.rst.txt +++ /dev/null @@ -1,38 +0,0 @@ -.. index:: pair: class; dpctl::syclinterface::dpctl_device_selector -.. _doxid-d0/dbb/classdpctl_1_1syclinterface_1_1dpctl__device__selector: - -class dpctl::syclinterface::dpctl_device_selector -================================================= - -.. toctree:: - :hidden: - - - - -.. ref-code-block:: cpp - :class: doxyrest-overview-code-block - - #include - - class dpctl_device_selector - { - public: - // fields - - static constexpr int :target:`REJECT_DEVICE` = -1; - - // methods - - virtual - int - :target:`operator ()` (const sycl::device&) const; - }; - - // direct descendants - - class :ref:`dpctl_accelerator_selector`; - class :ref:`dpctl_cpu_selector`; - class :ref:`dpctl_default_selector`; - class :ref:`dpctl_filter_selector`; - class :ref:`dpctl_gpu_selector`; diff --git a/pulls/1961/_sources/api_reference/libsyclinterface/generated/class_dpctl_syclinterface_dpctl_filter_selector.rst.txt b/pulls/1961/_sources/api_reference/libsyclinterface/generated/class_dpctl_syclinterface_dpctl_filter_selector.rst.txt deleted file mode 100644 index c4ddf102f3..0000000000 --- a/pulls/1961/_sources/api_reference/libsyclinterface/generated/class_dpctl_syclinterface_dpctl_filter_selector.rst.txt +++ /dev/null @@ -1,48 +0,0 @@ -.. index:: pair: class; dpctl::syclinterface::dpctl_filter_selector -.. _doxid-d9/dba/classdpctl_1_1syclinterface_1_1dpctl__filter__selector: - -class dpctl::syclinterface::dpctl_filter_selector -================================================= - -.. toctree:: - :hidden: - - - - -.. ref-code-block:: cpp - :class: doxyrest-overview-code-block - - #include - - class dpctl_filter_selector: public :ref:`dpctl::syclinterface::dpctl_device_selector` - { - public: - // construction - - :target:`dpctl_filter_selector`(const std::string& fs); - - // methods - - virtual - int - :target:`operator ()` (const sycl::device& d) const; - }; - -Inherited Members ------------------ - -.. ref-code-block:: cpp - :class: doxyrest-overview-inherited-code-block - - public: - // fields - - static constexpr int :ref:`REJECT_DEVICE` = -1; - - // methods - - virtual - int - :ref:`operator ()` (const sycl::device&) const; - diff --git a/pulls/1961/_sources/api_reference/libsyclinterface/generated/class_dpctl_syclinterface_dpctl_gpu_selector.rst.txt b/pulls/1961/_sources/api_reference/libsyclinterface/generated/class_dpctl_syclinterface_dpctl_gpu_selector.rst.txt deleted file mode 100644 index 738828531a..0000000000 --- a/pulls/1961/_sources/api_reference/libsyclinterface/generated/class_dpctl_syclinterface_dpctl_gpu_selector.rst.txt +++ /dev/null @@ -1,44 +0,0 @@ -.. index:: pair: class; dpctl::syclinterface::dpctl_gpu_selector -.. _doxid-dc/d55/classdpctl_1_1syclinterface_1_1dpctl__gpu__selector: - -class dpctl::syclinterface::dpctl_gpu_selector -============================================== - -.. toctree:: - :hidden: - - - - -.. ref-code-block:: cpp - :class: doxyrest-overview-code-block - - #include - - class dpctl_gpu_selector: public :ref:`dpctl::syclinterface::dpctl_device_selector` - { - public: - // methods - - virtual - int - :target:`operator ()` (const sycl::device& d) const; - }; - -Inherited Members ------------------ - -.. ref-code-block:: cpp - :class: doxyrest-overview-inherited-code-block - - public: - // fields - - static constexpr int :ref:`REJECT_DEVICE` = -1; - - // methods - - virtual - int - :ref:`operator ()` (const sycl::device&) const; - diff --git a/pulls/1961/_sources/api_reference/libsyclinterface/generated/enum_DPCTLGlobalMemCacheType.rst.txt b/pulls/1961/_sources/api_reference/libsyclinterface/generated/enum_DPCTLGlobalMemCacheType.rst.txt deleted file mode 100644 index c422836d7d..0000000000 --- a/pulls/1961/_sources/api_reference/libsyclinterface/generated/enum_DPCTLGlobalMemCacheType.rst.txt +++ /dev/null @@ -1,21 +0,0 @@ -.. index:: pair: enum; DPCTLGlobalMemCacheType -.. _doxid-d3/d94/dpctl__sycl__enum__types_8h_1a229ff3945c2347aa0999fe2e28aaa94d: - -enum DPCTLGlobalMemCacheType -============================ - - - -.. ref-code-block:: cpp - :class: doxyrest-overview-code-block - - #include - - enum DPCTLGlobalMemCacheType - { - :target:`DPCTL_MEM_CACHE_TYPE_INDETERMINATE`, - :target:`DPCTL_MEM_CACHE_TYPE_NONE`, - :target:`DPCTL_MEM_CACHE_TYPE_READ_ONLY`, - :target:`DPCTL_MEM_CACHE_TYPE_READ_WRITE`, - }; - diff --git a/pulls/1961/_sources/api_reference/libsyclinterface/generated/enum_DPCTLKernelArgType.rst.txt b/pulls/1961/_sources/api_reference/libsyclinterface/generated/enum_DPCTLKernelArgType.rst.txt deleted file mode 100644 index 0eb9e09fdf..0000000000 --- a/pulls/1961/_sources/api_reference/libsyclinterface/generated/enum_DPCTLKernelArgType.rst.txt +++ /dev/null @@ -1,42 +0,0 @@ -.. index:: pair: enum; DPCTLKernelArgType -.. _doxid-d3/d94/dpctl__sycl__enum__types_8h_1a2b3d2dd8e0c358370eac0a59fb3fe089: - -enum DPCTLKernelArgType -======================= - -Overview -~~~~~~~~ - -Supported types for kernel arguments to be passed to a Sycl kernel using DPCTL. :ref:`More...` - -.. ref-code-block:: cpp - :class: doxyrest-overview-code-block - - #include - - enum DPCTLKernelArgType - { - :target:`DPCTL_INT8_T`, - :target:`DPCTL_UINT8_T`, - :target:`DPCTL_INT16_T`, - :target:`DPCTL_UINT16_T`, - :target:`DPCTL_INT32_T`, - :target:`DPCTL_UINT32_T`, - :target:`DPCTL_INT64_T`, - :target:`DPCTL_UINT64_T`, - :target:`DPCTL_FLOAT32_T`, - :target:`DPCTL_FLOAT64_T`, - :target:`DPCTL_VOID_PTR`, - :target:`DPCTL_LOCAL_ACCESSOR`, - :target:`DPCTL_UNSUPPORTED_KERNEL_ARG`, - }; - -.. _details-d3/d94/dpctl__sycl__enum__types_8h_1a2b3d2dd8e0c358370eac0a59fb3fe089: - -Detailed Documentation -~~~~~~~~~~~~~~~~~~~~~~ - -Supported types for kernel arguments to be passed to a Sycl kernel using DPCTL. - -Todo Add support for sycl::buffer - diff --git a/pulls/1961/_sources/api_reference/libsyclinterface/generated/enum_DPCTLPartitionAffinityDomainType.rst.txt b/pulls/1961/_sources/api_reference/libsyclinterface/generated/enum_DPCTLPartitionAffinityDomainType.rst.txt deleted file mode 100644 index 8734ef8a0d..0000000000 --- a/pulls/1961/_sources/api_reference/libsyclinterface/generated/enum_DPCTLPartitionAffinityDomainType.rst.txt +++ /dev/null @@ -1,24 +0,0 @@ -.. index:: pair: enum; DPCTLPartitionAffinityDomainType -.. _doxid-d3/d94/dpctl__sycl__enum__types_8h_1a27908eb4caace370bd771904e6a48670: - -enum DPCTLPartitionAffinityDomainType -===================================== - -DPCTL analogue of ``sycl::info::partition_affinity_domain`` enum. - -.. ref-code-block:: cpp - :class: doxyrest-overview-code-block - - #include - - enum DPCTLPartitionAffinityDomainType - { - :target:`not_applicable`, - :target:`numa`, - :target:`L4_cache`, - :target:`L3_cache`, - :target:`L2_cache`, - :target:`L1_cache`, - :target:`next_partitionable`, - }; - diff --git a/pulls/1961/_sources/api_reference/libsyclinterface/generated/enum_DPCTLQueuePropertyType.rst.txt b/pulls/1961/_sources/api_reference/libsyclinterface/generated/enum_DPCTLQueuePropertyType.rst.txt deleted file mode 100644 index 63d888d734..0000000000 --- a/pulls/1961/_sources/api_reference/libsyclinterface/generated/enum_DPCTLQueuePropertyType.rst.txt +++ /dev/null @@ -1,20 +0,0 @@ -.. index:: pair: enum; DPCTLQueuePropertyType -.. _doxid-d3/d94/dpctl__sycl__enum__types_8h_1a439a88c8e537df22ac3e2c66fce3ad4f: - -enum DPCTLQueuePropertyType -=========================== - -Enums to depict the properties that can be passed to a sycl::queue constructor. - -.. ref-code-block:: cpp - :class: doxyrest-overview-code-block - - #include - - enum DPCTLQueuePropertyType - { - :target:`DPCTL_DEFAULT_PROPERTY` = 0, - :target:`DPCTL_ENABLE_PROFILING` = 1<<0, - :target:`DPCTL_IN_ORDER` = 1<<1, - }; - diff --git a/pulls/1961/_sources/api_reference/libsyclinterface/generated/enum_DPCTLSyclAspectType.rst.txt b/pulls/1961/_sources/api_reference/libsyclinterface/generated/enum_DPCTLSyclAspectType.rst.txt deleted file mode 100644 index 6271a78a5b..0000000000 --- a/pulls/1961/_sources/api_reference/libsyclinterface/generated/enum_DPCTLSyclAspectType.rst.txt +++ /dev/null @@ -1,37 +0,0 @@ -.. index:: pair: enum; DPCTLSyclAspectType -.. _doxid-d3/d94/dpctl__sycl__enum__types_8h_1a5f57a140cfab264daf4500bdac0be389: - -enum DPCTLSyclAspectType -======================== - -DPCTL device has an associated set of aspects which identify characteristics of the device. - -.. ref-code-block:: cpp - :class: doxyrest-overview-code-block - - #include - - enum DPCTLSyclAspectType - { - :target:`host`, - :target:`cpu`, - :target:`gpu`, - :target:`accelerator`, - :target:`custom`, - :target:`fp16`, - :target:`fp64`, - :target:`atomic64`, - :target:`image`, - :target:`online_compiler`, - :target:`online_linker`, - :target:`queue_profiling`, - :target:`usm_device_allocations`, - :target:`usm_host_allocations`, - :target:`usm_shared_allocations`, - :target:`usm_system_allocations`, - :target:`usm_atomic_host_allocations`, - :target:`usm_atomic_shared_allocations`, - :target:`host_debuggable`, - :target:`emulated`, - }; - diff --git a/pulls/1961/_sources/api_reference/libsyclinterface/generated/enum_DPCTLSyclBackendType.rst.txt b/pulls/1961/_sources/api_reference/libsyclinterface/generated/enum_DPCTLSyclBackendType.rst.txt deleted file mode 100644 index 2283d513d5..0000000000 --- a/pulls/1961/_sources/api_reference/libsyclinterface/generated/enum_DPCTLSyclBackendType.rst.txt +++ /dev/null @@ -1,23 +0,0 @@ -.. index:: pair: enum; DPCTLSyclBackendType -.. _doxid-d3/d94/dpctl__sycl__enum__types_8h_1aa217d239d7e3752c49bd9fd42c71c933: - -enum DPCTLSyclBackendType -========================= - -Redefinition of DPC++-specific Sycl backend types. - -.. ref-code-block:: cpp - :class: doxyrest-overview-code-block - - #include - - enum DPCTLSyclBackendType - { - :target:`DPCTL_CUDA` = 1<<16, - :target:`DPCTL_LEVEL_ZERO` = 1<<17, - :target:`DPCTL_OPENCL` = 1<<18, - :target:`DPCTL_UNKNOWN_BACKEND` = 0, - :target:`DPCTL_ALL_BACKENDS` =((1<<5)-1)<<16, - :target:`DPCTL_HIP` = 1<<19, - }; - diff --git a/pulls/1961/_sources/api_reference/libsyclinterface/generated/enum_DPCTLSyclDeviceType.rst.txt b/pulls/1961/_sources/api_reference/libsyclinterface/generated/enum_DPCTLSyclDeviceType.rst.txt deleted file mode 100644 index 25b1aae976..0000000000 --- a/pulls/1961/_sources/api_reference/libsyclinterface/generated/enum_DPCTLSyclDeviceType.rst.txt +++ /dev/null @@ -1,24 +0,0 @@ -.. index:: pair: enum; DPCTLSyclDeviceType -.. _doxid-d3/d94/dpctl__sycl__enum__types_8h_1a15d8954e4e712e2ec00838a9283d13ff: - -enum DPCTLSyclDeviceType -======================== - -DPCTL device types that are equivalent to Sycl's device_type. - -.. ref-code-block:: cpp - :class: doxyrest-overview-code-block - - #include - - enum DPCTLSyclDeviceType - { - :target:`DPCTL_ACCELERATOR` = 1<<0, - :target:`DPCTL_AUTOMATIC` = 1<<1, - :target:`DPCTL_CPU` = 1<<2, - :target:`DPCTL_CUSTOM` = 1<<3, - :target:`DPCTL_GPU` = 1<<4, - :target:`DPCTL_ALL` =(1<<6) - 1, - :target:`DPCTL_UNKNOWN_DEVICE` = 0, - }; - diff --git a/pulls/1961/_sources/api_reference/libsyclinterface/generated/enum_DPCTLSyclEventStatusType.rst.txt b/pulls/1961/_sources/api_reference/libsyclinterface/generated/enum_DPCTLSyclEventStatusType.rst.txt deleted file mode 100644 index 152f279c86..0000000000 --- a/pulls/1961/_sources/api_reference/libsyclinterface/generated/enum_DPCTLSyclEventStatusType.rst.txt +++ /dev/null @@ -1,21 +0,0 @@ -.. index:: pair: enum; DPCTLSyclEventStatusType -.. _doxid-d3/d94/dpctl__sycl__enum__types_8h_1ac950d7ef3975b7c553971613f4a27021: - -enum DPCTLSyclEventStatusType -============================= - - - -.. ref-code-block:: cpp - :class: doxyrest-overview-code-block - - #include - - enum DPCTLSyclEventStatusType - { - :target:`DPCTL_UNKNOWN_STATUS`, - :target:`DPCTL_SUBMITTED`, - :target:`DPCTL_RUNNING`, - :target:`DPCTL_COMPLETE`, - }; - diff --git a/pulls/1961/_sources/api_reference/libsyclinterface/generated/enum_DPCTLSyclUSMType.rst.txt b/pulls/1961/_sources/api_reference/libsyclinterface/generated/enum_DPCTLSyclUSMType.rst.txt deleted file mode 100644 index d3f38d2543..0000000000 --- a/pulls/1961/_sources/api_reference/libsyclinterface/generated/enum_DPCTLSyclUSMType.rst.txt +++ /dev/null @@ -1,21 +0,0 @@ -.. index:: pair: enum; DPCTLSyclUSMType -.. _doxid-d3/d94/dpctl__sycl__enum__types_8h_1a61bd8b72de91212af565a9be9b913844: - -enum DPCTLSyclUSMType -===================== - -Enum types for SYCL's USM allocator types. - -.. ref-code-block:: cpp - :class: doxyrest-overview-code-block - - #include - - enum DPCTLSyclUSMType - { - :target:`DPCTL_USM_UNKNOWN` = 0, - :target:`DPCTL_USM_DEVICE`, - :target:`DPCTL_USM_SHARED`, - :target:`DPCTL_USM_HOST`, - }; - diff --git a/pulls/1961/_sources/api_reference/libsyclinterface/generated/global.rst.txt b/pulls/1961/_sources/api_reference/libsyclinterface/generated/global.rst.txt deleted file mode 100644 index e7b172eef8..0000000000 --- a/pulls/1961/_sources/api_reference/libsyclinterface/generated/global.rst.txt +++ /dev/null @@ -1,919 +0,0 @@ -.. _global: -.. index:: pair: namespace; global - -Global Namespace -================ - -.. toctree:: - :hidden: - - namespace_dpctl.rst - enum_DPCTLGlobalMemCacheType.rst - enum_DPCTLKernelArgType.rst - enum_DPCTLPartitionAffinityDomainType.rst - enum_DPCTLQueuePropertyType.rst - enum_DPCTLSyclAspectType.rst - enum_DPCTLSyclBackendType.rst - enum_DPCTLSyclDeviceType.rst - enum_DPCTLSyclEventStatusType.rst - enum_DPCTLSyclUSMType.rst - struct_MDLocalAccessorTy.rst - -Overview -~~~~~~~~ - - - - -.. ref-code-block:: cpp - :class: doxyrest-overview-code-block - - - // namespaces - - namespace :ref:`dpctl`; - namespace :ref:`dpctl::syclinterface`; - - // typedefs - - typedef void :ref:`error_handler_callback`(int err_code); - typedef struct :ref:`MDLocalAccessorTy` :ref:`MDLocalAccessor`; - typedef struct DPCTLOpaqueSyclContext* :ref:`DPCTLSyclContextRef`; - typedef struct DPCTLOpaqueSyclDevice* :ref:`DPCTLSyclDeviceRef`; - typedef struct DPCTLOpaqueSyclDeviceSelector* :ref:`DPCTLSyclDeviceSelectorRef`; - typedef struct DPCTLOpaqueSyclEvent* :ref:`DPCTLSyclEventRef`; - typedef struct DPCTLOpaqueSyclKernelBundle* :ref:`DPCTLSyclKernelBundleRef`; - typedef struct DPCTLOpaqueSyclKernel* :ref:`DPCTLSyclKernelRef`; - typedef struct DPCTLOpaqueSyclPlatform* :ref:`DPCTLSyclPlatformRef`; - typedef struct DPCTLOpaqueSyclQueue* :ref:`DPCTLSyclQueueRef`; - typedef struct DPCTLOpaqueSyclUSM* :ref:`DPCTLSyclUSMRef`; - - // enums - - enum :ref:`DPCTLGlobalMemCacheType`; - enum :ref:`DPCTLKernelArgType`; - enum :ref:`DPCTLPartitionAffinityDomainType`; - enum :ref:`DPCTLQueuePropertyType`; - enum :ref:`DPCTLSyclAspectType`; - enum :ref:`DPCTLSyclBackendType`; - enum :ref:`DPCTLSyclDeviceType`; - enum :ref:`DPCTLSyclEventStatusType`; - enum :ref:`DPCTLSyclUSMType`; - - // structs - - struct :ref:`MDLocalAccessorTy`; - - // global functions - - :ref:`DPCTL_API` uint32_t - :ref:`DPCTLDevice_GetGlobalMemCacheLineSize`(:ref:`__dpctl_keep` const :ref:`DPCTLSyclDeviceRef` DRef); - - :ref:`DPCTL_API` uint64_t - :ref:`DPCTLDevice_GetGlobalMemCacheSize`(:ref:`__dpctl_keep` const :ref:`DPCTLSyclDeviceRef` DRef); - - :ref:`DPCTL_API` :ref:`DPCTLGlobalMemCacheType` - :ref:`DPCTLDevice_GetGlobalMemCacheType`(:ref:`__dpctl_keep` const :ref:`DPCTLSyclDeviceRef` DRef); - - :ref:`DPCTL_API` size_t - :ref:`DPCTLDevice_GetImage2dMaxHeight`(:ref:`__dpctl_keep` const :ref:`DPCTLSyclDeviceRef` DRef); - - :ref:`DPCTL_API` size_t - :ref:`DPCTLDevice_GetImage2dMaxWidth`(:ref:`__dpctl_keep` const :ref:`DPCTLSyclDeviceRef` DRef); - - :ref:`DPCTL_API` size_t - :ref:`DPCTLDevice_GetImage3dMaxDepth`(:ref:`__dpctl_keep` const :ref:`DPCTLSyclDeviceRef` DRef); - - :ref:`DPCTL_API` size_t - :ref:`DPCTLDevice_GetImage3dMaxHeight`(:ref:`__dpctl_keep` const :ref:`DPCTLSyclDeviceRef` DRef); - - :ref:`DPCTL_API` size_t - :ref:`DPCTLDevice_GetImage3dMaxWidth`(:ref:`__dpctl_keep` const :ref:`DPCTLSyclDeviceRef` DRef); - - :ref:`DPCTL_API` uint32_t - :ref:`DPCTLDevice_GetMaxClockFrequency`(:ref:`__dpctl_keep` const :ref:`DPCTLSyclDeviceRef` DRef); - - :ref:`DPCTL_API` uint64_t - :ref:`DPCTLDevice_GetMaxMemAllocSize`(:ref:`__dpctl_keep` const :ref:`DPCTLSyclDeviceRef` DRef); - - :ref:`DPCTL_API` uint32_t - :ref:`DPCTLDevice_GetMaxReadImageArgs`(:ref:`__dpctl_keep` const :ref:`DPCTLSyclDeviceRef` DRef); - - :ref:`DPCTL_API` uint32_t - :ref:`DPCTLDevice_GetMaxWriteImageArgs`(:ref:`__dpctl_keep` const :ref:`DPCTLSyclDeviceRef` DRef); - - :ref:`DPCTL_API` :ref:`__dpctl_give` :ref:`DPCTLSyclDeviceRef` - :ref:`DPCTLDevice_GetParentDevice`(:ref:`__dpctl_keep` const :ref:`DPCTLSyclDeviceRef` DRef); - - :ref:`DPCTL_API` uint32_t - :ref:`DPCTLDevice_GetPartitionMaxSubDevices`(:ref:`__dpctl_keep` const :ref:`DPCTLSyclDeviceRef` DRef); - - :ref:`DPCTL_API` size_t - :ref:`DPCTLDevice_GetProfilingTimerResolution`(:ref:`__dpctl_keep` const :ref:`DPCTLSyclDeviceRef` DRef); - - :ref:`DPCTL_API` size_t - :ref:`DPCTLDevice_Hash`(:ref:`__dpctl_keep` const :ref:`DPCTLSyclDeviceRef` DRef); - - :ref:`DPCTL_API` :ref:`__dpctl_give` :ref:`DPCTLSyclEventRef` - :ref:`DPCTLQueue_SubmitBarrier`(:ref:`__dpctl_keep` const :ref:`DPCTLSyclQueueRef` QRef); - - :ref:`DPCTL_API` :ref:`__dpctl_give` :ref:`DPCTLSyclEventRef` - :ref:`DPCTLQueue_SubmitBarrierForEvents`( - :ref:`__dpctl_keep` const :ref:`DPCTLSyclQueueRef` QRef, - :ref:`__dpctl_keep` const :ref:`DPCTLSyclEventRef`* DepEvents, - size_t NDepEvents - ); - - :ref:`DPCTL_C_EXTERN_C_BEGIN` :ref:`DPCTL_API` void - :ref:`DPCTLCString_Delete`(:ref:`__dpctl_take` const char* str); - - :ref:`DPCTL_API` void - :ref:`DPCTLSize_t_Array_Delete`(:ref:`__dpctl_take` size_t* arr); - - // macros - - #define :target:`DPCTL_C_EXTERN_C_BEGIN` - #define :target:`DPCTL_C_EXTERN_C_END` - #define :target:`DPCTL_DECLARE_VECTOR`(EL) - #define :target:`DPCTL_DECLARE_VECTOR_FN`(EL) - #define :ref:`DPCTL_DECLARE_VECTOR_TYPE`(EL) - #define :target:`DPCTL_DPCPP_VERSION` - #define :target:`DPCTL_ENABLE_L0_PROGRAM_CREATION` - #define :target:`DPCTL_LIBCL_LOADER_FILENAME` - #define :target:`DPCTL_LIBZE_LOADER_FILENAME` - #define :ref:`HUGE_VALF` - #define :ref:`INT64_MAX` - #define :ref:`INT64_MIN` - #define :ref:`UINT64_MAX` - #define :target:`__SYCL_COMPILER_VERSION_REQUIRED` - -.. _details-global: - -Detailed Documentation -~~~~~~~~~~~~~~~~~~~~~~ - - - -Typedefs --------- - -.. index:: pair: typedef; error_handler_callback -.. _doxid-de/d75/dpctl__error__handler__type_8h_1aeb0f262687ced57ead8f8b7d0b7dcefe: - -.. ref-code-block:: cpp - :class: doxyrest-title-code-block - - typedef void error_handler_callback(int err_code) - -Type of function to be used in SYCL async error handler provide by DPCTL. - - - -.. rubric:: Parameters: - -.. list-table:: - :widths: 20 80 - - * - - err_code - - - Error code extracted from an SYCL asynchronous error. - -.. index:: pair: typedef; MDLocalAccessor -.. _doxid-da/db8/dpctl__sycl__queue__interface_8h_1a7779ae83e3fd4db1174768e1ba62f30b: - -.. ref-code-block:: cpp - :class: doxyrest-title-code-block - - typedef struct :ref:`MDLocalAccessorTy` MDLocalAccessor - -Structure to be used to specify dimensionality and type of local_accessor kernel type argument. - -.. index:: pair: typedef; DPCTLSyclContextRef -.. _doxid-df/d57/dpctl__sycl__types_8h_1accf78808322af80b73da617cb2f15f08: - -.. ref-code-block:: cpp - :class: doxyrest-title-code-block - - typedef struct DPCTLOpaqueSyclContext* DPCTLSyclContextRef - -Opaque pointer to a ``sycl::context`` - -.. index:: pair: typedef; DPCTLSyclDeviceRef -.. _doxid-df/d57/dpctl__sycl__types_8h_1a8dae76b436012ecbdebbd568e77f440d: - -.. ref-code-block:: cpp - :class: doxyrest-title-code-block - - typedef struct DPCTLOpaqueSyclDevice* DPCTLSyclDeviceRef - -Opaque pointer to a ``sycl::device`` - -.. index:: pair: typedef; DPCTLSyclDeviceSelectorRef -.. _doxid-df/d57/dpctl__sycl__types_8h_1a50a1c6c98f4ca4a27a88e53a7f3eeb83: - -.. ref-code-block:: cpp - :class: doxyrest-title-code-block - - typedef struct DPCTLOpaqueSyclDeviceSelector* DPCTLSyclDeviceSelectorRef - -Opaque pointer to a ``sycl::device_selector`` - -.. index:: pair: typedef; DPCTLSyclEventRef -.. _doxid-df/d57/dpctl__sycl__types_8h_1a42590892ae4324c54f6ddef34009ca03: - -.. ref-code-block:: cpp - :class: doxyrest-title-code-block - - typedef struct DPCTLOpaqueSyclEvent* DPCTLSyclEventRef - -Opaque pointer to a ``sycl::event`` - -.. index:: pair: typedef; DPCTLSyclKernelBundleRef -.. _doxid-df/d57/dpctl__sycl__types_8h_1a6d9c52ea7d2e9394ddf7ba7e7f01bebd: - -.. ref-code-block:: cpp - :class: doxyrest-title-code-block - - typedef struct DPCTLOpaqueSyclKernelBundle* DPCTLSyclKernelBundleRef - -Opaque pointer to a ``sycl::kernel_bundle`` - -.. index:: pair: typedef; DPCTLSyclKernelRef -.. _doxid-df/d57/dpctl__sycl__types_8h_1a3f6be07fdf695c015719ce0b0c237844: - -.. ref-code-block:: cpp - :class: doxyrest-title-code-block - - typedef struct DPCTLOpaqueSyclKernel* DPCTLSyclKernelRef - -Opaque pointer to a ``sycl::kernel`` - -.. index:: pair: typedef; DPCTLSyclPlatformRef -.. _doxid-df/d57/dpctl__sycl__types_8h_1aae750289dcff2c3739f4870086ac7ed0: - -.. ref-code-block:: cpp - :class: doxyrest-title-code-block - - typedef struct DPCTLOpaqueSyclPlatform* DPCTLSyclPlatformRef - -Opaque pointer to a ``sycl::platform`` - -.. index:: pair: typedef; DPCTLSyclQueueRef -.. _doxid-df/d57/dpctl__sycl__types_8h_1af23137a8bf20ff63b10db9f7f987799a: - -.. ref-code-block:: cpp - :class: doxyrest-title-code-block - - typedef struct DPCTLOpaqueSyclQueue* DPCTLSyclQueueRef - -Opaque pointer to a ``sycl::queue`` - -.. index:: pair: typedef; DPCTLSyclUSMRef -.. _doxid-df/d57/dpctl__sycl__types_8h_1a8c78ad1413045f90e15f5b6a2727d2e6: - -.. ref-code-block:: cpp - :class: doxyrest-title-code-block - - typedef struct DPCTLOpaqueSyclUSM* DPCTLSyclUSMRef - -Used to pass a ``sycl::usm`` memory opaquely through DPCTL interfaces. - -Global Functions ----------------- - -.. index:: pair: function; DPCTLDevice_GetGlobalMemCacheLineSize -.. _doxid-d4/d5a/dpctl__sycl__device__interface_8h_1ac47e84e08c40272eb54358b6ab76c0f0: - -.. ref-code-block:: cpp - :class: doxyrest-title-code-block - - :ref:`DPCTL_API` uint32_t - DPCTLDevice_GetGlobalMemCacheLineSize(:ref:`__dpctl_keep` const :ref:`DPCTLSyclDeviceRef` DRef) - -Wrapper over device.get_info - - - -.. rubric:: Parameters: - -.. list-table:: - :widths: 20 80 - - * - - DRef - - - Opaque pointer to a sycl::device - - - -.. rubric:: Returns: - -Returns the size of global memory cache line in bytes as uint32_t. - -.. index:: pair: function; DPCTLDevice_GetGlobalMemCacheSize -.. _doxid-d4/d5a/dpctl__sycl__device__interface_8h_1ae4641fb22da8c78a1c5b3c9a0c0fd913: - -.. ref-code-block:: cpp - :class: doxyrest-title-code-block - - :ref:`DPCTL_API` uint64_t - DPCTLDevice_GetGlobalMemCacheSize(:ref:`__dpctl_keep` const :ref:`DPCTLSyclDeviceRef` DRef) - -Wrapper over device.get_info - - - -.. rubric:: Parameters: - -.. list-table:: - :widths: 20 80 - - * - - DRef - - - Opaque pointer to a sycl::device - - - -.. rubric:: Returns: - -Returns the size of global memory cache in bytes as uint64_t. - -.. index:: pair: function; DPCTLDevice_GetGlobalMemCacheType -.. _doxid-d4/d5a/dpctl__sycl__device__interface_8h_1a34aef85cc31edf294aece8d68f5bccba: - -.. ref-code-block:: cpp - :class: doxyrest-title-code-block - - :ref:`DPCTL_API` :ref:`DPCTLGlobalMemCacheType` - DPCTLDevice_GetGlobalMemCacheType(:ref:`__dpctl_keep` const :ref:`DPCTLSyclDeviceRef` DRef) - -Wrapper over device.get_info - - - -.. rubric:: Parameters: - -.. list-table:: - :widths: 20 80 - - * - - DRef - - - Opaque pointer to a sycl::device - - - -.. rubric:: Returns: - -Returns the type of global memory cache supported. - -.. index:: pair: function; DPCTLDevice_GetImage2dMaxHeight -.. _doxid-d4/d5a/dpctl__sycl__device__interface_8h_1a4ef25a38cbf63e618016302e8ebf480d: - -.. ref-code-block:: cpp - :class: doxyrest-title-code-block - - :ref:`DPCTL_API` size_t - DPCTLDevice_GetImage2dMaxHeight(:ref:`__dpctl_keep` const :ref:`DPCTLSyclDeviceRef` DRef) - -Wrapper over device.get_info(). - - - -.. rubric:: Parameters: - -.. list-table:: - :widths: 20 80 - - * - - DRef - - - Opaque pointer to a sycl::device - - - -.. rubric:: Returns: - -Returns the maximum height of a 2D image or 1D image in pixels. The minimum value is 8192 if the SYCL device has aspect::image. - -.. index:: pair: function; DPCTLDevice_GetImage2dMaxWidth -.. _doxid-d4/d5a/dpctl__sycl__device__interface_8h_1ad1f6957fdc5fb51ed873fa444af17c13: - -.. ref-code-block:: cpp - :class: doxyrest-title-code-block - - :ref:`DPCTL_API` size_t - DPCTLDevice_GetImage2dMaxWidth(:ref:`__dpctl_keep` const :ref:`DPCTLSyclDeviceRef` DRef) - -Wrapper over device.get_info(). - - - -.. rubric:: Parameters: - -.. list-table:: - :widths: 20 80 - - * - - DRef - - - Opaque pointer to a sycl::device - - - -.. rubric:: Returns: - -Returns the maximum width of a 2D image or 1D image in pixels. The minimum value is 8192 if the SYCL device has aspect::image. - -.. index:: pair: function; DPCTLDevice_GetImage3dMaxDepth -.. _doxid-d4/d5a/dpctl__sycl__device__interface_8h_1ac64423a160a010d1841b36ae2ab48658: - -.. ref-code-block:: cpp - :class: doxyrest-title-code-block - - :ref:`DPCTL_API` size_t - DPCTLDevice_GetImage3dMaxDepth(:ref:`__dpctl_keep` const :ref:`DPCTLSyclDeviceRef` DRef) - -Wrapper over device.get_info(). - - - -.. rubric:: Parameters: - -.. list-table:: - :widths: 20 80 - - * - - DRef - - - Opaque pointer to a sycl::device - - - -.. rubric:: Returns: - -Returns the maximum depth of a 3D image The minimum value is 2048 if the SYCL device has aspect::image. - -.. index:: pair: function; DPCTLDevice_GetImage3dMaxHeight -.. _doxid-d4/d5a/dpctl__sycl__device__interface_8h_1ac041263954e4e4c2a5bf58eeb08c0b7e: - -.. ref-code-block:: cpp - :class: doxyrest-title-code-block - - :ref:`DPCTL_API` size_t - DPCTLDevice_GetImage3dMaxHeight(:ref:`__dpctl_keep` const :ref:`DPCTLSyclDeviceRef` DRef) - -Wrapper over device.get_info(). - - - -.. rubric:: Parameters: - -.. list-table:: - :widths: 20 80 - - * - - DRef - - - Opaque pointer to a sycl::device - - - -.. rubric:: Returns: - -Returns the maximum height of a 3D image The minimum value is 2048 if the SYCL device has aspect::image. - -.. index:: pair: function; DPCTLDevice_GetImage3dMaxWidth -.. _doxid-d4/d5a/dpctl__sycl__device__interface_8h_1a775e74dcd25c38e1d1575df3262b6f60: - -.. ref-code-block:: cpp - :class: doxyrest-title-code-block - - :ref:`DPCTL_API` size_t - DPCTLDevice_GetImage3dMaxWidth(:ref:`__dpctl_keep` const :ref:`DPCTLSyclDeviceRef` DRef) - -Wrapper over device.get_info(). - - - -.. rubric:: Parameters: - -.. list-table:: - :widths: 20 80 - - * - - DRef - - - Opaque pointer to a sycl::device - - - -.. rubric:: Returns: - -Returns the maximum width of a 3D image in pixels. The minimum value is 2048 if the SYCL device has aspect::image. - -.. index:: pair: function; DPCTLDevice_GetMaxClockFrequency -.. _doxid-d4/d5a/dpctl__sycl__device__interface_8h_1a8a86e895dc25e747f8f4349100d85809: - -.. ref-code-block:: cpp - :class: doxyrest-title-code-block - - :ref:`DPCTL_API` uint32_t - DPCTLDevice_GetMaxClockFrequency(:ref:`__dpctl_keep` const :ref:`DPCTLSyclDeviceRef` DRef) - -Wrapper over device.get_info - - - -.. rubric:: Parameters: - -.. list-table:: - :widths: 20 80 - - * - - DRef - - - Opaque pointer to a sycl::device - - - -.. rubric:: Returns: - -Returns the maximum clock frequency in MHz as uint32_t. - -.. index:: pair: function; DPCTLDevice_GetMaxMemAllocSize -.. _doxid-d4/d5a/dpctl__sycl__device__interface_8h_1ad546933b32f0c9917982f39ddf0be5c6: - -.. ref-code-block:: cpp - :class: doxyrest-title-code-block - - :ref:`DPCTL_API` uint64_t - DPCTLDevice_GetMaxMemAllocSize(:ref:`__dpctl_keep` const :ref:`DPCTLSyclDeviceRef` DRef) - -Wrapper over device.get_info - - - -.. rubric:: Parameters: - -.. list-table:: - :widths: 20 80 - - * - - DRef - - - Opaque pointer to a sycl::device - - - -.. rubric:: Returns: - -Returns the maximum size of memory object in bytes as uint64_t. - -.. index:: pair: function; DPCTLDevice_GetMaxReadImageArgs -.. _doxid-d4/d5a/dpctl__sycl__device__interface_8h_1a9810a239416c53427e3742bfb72ea0a6: - -.. ref-code-block:: cpp - :class: doxyrest-title-code-block - - :ref:`DPCTL_API` uint32_t - DPCTLDevice_GetMaxReadImageArgs(:ref:`__dpctl_keep` const :ref:`DPCTLSyclDeviceRef` DRef) - -Wrapper over device.get_info(). - - - -.. rubric:: Parameters: - -.. list-table:: - :widths: 20 80 - - * - - DRef - - - Opaque pointer to a sycl::device - - - -.. rubric:: Returns: - -Returns the maximum number of simultaneous image objects that can be read from by a kernel. The minimum value is 128 if the SYCL device has aspect::image. - -.. index:: pair: function; DPCTLDevice_GetMaxWriteImageArgs -.. _doxid-d4/d5a/dpctl__sycl__device__interface_8h_1a34dbd5b5dbde22ba5f1d5205de298d81: - -.. ref-code-block:: cpp - :class: doxyrest-title-code-block - - :ref:`DPCTL_API` uint32_t - DPCTLDevice_GetMaxWriteImageArgs(:ref:`__dpctl_keep` const :ref:`DPCTLSyclDeviceRef` DRef) - -Wrapper over device.get_info(). - - - -.. rubric:: Parameters: - -.. list-table:: - :widths: 20 80 - - * - - DRef - - - Opaque pointer to a sycl::device - - - -.. rubric:: Returns: - -Returns the maximum number of simultaneous image objects that can be written to by a kernel. The minimum value is 8 if the SYCL device has aspect::image. - -.. index:: pair: function; DPCTLDevice_GetParentDevice -.. _doxid-d4/d5a/dpctl__sycl__device__interface_8h_1acccdc3f034e6c5fd2a249907355169bc: - -.. ref-code-block:: cpp - :class: doxyrest-title-code-block - - :ref:`DPCTL_API` :ref:`__dpctl_give` :ref:`DPCTLSyclDeviceRef` - DPCTLDevice_GetParentDevice(:ref:`__dpctl_keep` const :ref:`DPCTLSyclDeviceRef` DRef) - -Wrapper over device.get_info - - - -.. rubric:: Parameters: - -.. list-table:: - :widths: 20 80 - - * - - DRef - - - Opaque pointer to a sycl::device - - - -.. rubric:: Returns: - -Returns an opaque pointer to the parent device for a sub-device, or nullptr otherwise. - -.. index:: pair: function; DPCTLDevice_GetPartitionMaxSubDevices -.. _doxid-d4/d5a/dpctl__sycl__device__interface_8h_1ab48d25118cd217ccd917993afba98570: - -.. ref-code-block:: cpp - :class: doxyrest-title-code-block - - :ref:`DPCTL_API` uint32_t - DPCTLDevice_GetPartitionMaxSubDevices(:ref:`__dpctl_keep` const :ref:`DPCTLSyclDeviceRef` DRef) - -Wrapper over device.get_info - - - -.. rubric:: Parameters: - -.. list-table:: - :widths: 20 80 - - * - - DRef - - - Opaque pointer to a sycl::device - - - -.. rubric:: Returns: - -Returns the maximum number of sub-devices that can be created when this device is partitioned. - -.. index:: pair: function; DPCTLDevice_GetProfilingTimerResolution -.. _doxid-d4/d5a/dpctl__sycl__device__interface_8h_1a5fe67bf4915e62ce08d80d810f0e8632: - -.. ref-code-block:: cpp - :class: doxyrest-title-code-block - - :ref:`DPCTL_API` size_t - DPCTLDevice_GetProfilingTimerResolution(:ref:`__dpctl_keep` const :ref:`DPCTLSyclDeviceRef` DRef) - -Wrapper over device.get_info - - - -.. rubric:: Parameters: - -.. list-table:: - :widths: 20 80 - - * - - DRef - - - Opaque pointer to a sycl::device - - - -.. rubric:: Returns: - -Returns the resolution of device timer in nanoseconds. - -.. index:: pair: function; DPCTLDevice_Hash -.. _doxid-d4/d5a/dpctl__sycl__device__interface_8h_1a28538fa8029a6d4c7ff4d972ec690b97: - -.. ref-code-block:: cpp - :class: doxyrest-title-code-block - - :ref:`DPCTL_API` size_t - DPCTLDevice_Hash(:ref:`__dpctl_keep` const :ref:`DPCTLSyclDeviceRef` DRef) - -Wrapper over std::hash's operator() - - - -.. rubric:: Parameters: - -.. list-table:: - :widths: 20 80 - - * - - DRef - - - Opaque pointer to a sycl::device - - - -.. rubric:: Returns: - -Returns hash value. - -.. index:: pair: function; DPCTLQueue_SubmitBarrier -.. _doxid-da/db8/dpctl__sycl__queue__interface_8h_1a2453786e50a7d7e51a0d240b2ce52f53: - -.. ref-code-block:: cpp - :class: doxyrest-title-code-block - - :ref:`DPCTL_API` :ref:`__dpctl_give` :ref:`DPCTLSyclEventRef` - DPCTLQueue_SubmitBarrier(:ref:`__dpctl_keep` const :ref:`DPCTLSyclQueueRef` QRef) - -C-API wrapper for ``sycl::queue::submit_barrier()``. - - - -.. rubric:: Parameters: - -.. list-table:: - :widths: 20 80 - - * - - QRef - - - An opaque pointer to the ``sycl::queue``. - - - -.. rubric:: Returns: - -An opaque pointer to the ``sycl::event`` returned by the ``sycl::queue::submit_barrier()`` function. - -.. index:: pair: function; DPCTLQueue_SubmitBarrierForEvents -.. _doxid-da/db8/dpctl__sycl__queue__interface_8h_1a1666c1e2da52e7736cfc662a7c0ad6fb: - -.. ref-code-block:: cpp - :class: doxyrest-title-code-block - - :ref:`DPCTL_API` :ref:`__dpctl_give` :ref:`DPCTLSyclEventRef` - DPCTLQueue_SubmitBarrierForEvents( - :ref:`__dpctl_keep` const :ref:`DPCTLSyclQueueRef` QRef, - :ref:`__dpctl_keep` const :ref:`DPCTLSyclEventRef`* DepEvents, - size_t NDepEvents - ) - -C-API wrapper for ``sycl::queue::submit_barrier(event_vector)``. - - - -.. rubric:: Parameters: - -.. list-table:: - :widths: 20 80 - - * - - QRef - - - An opaque pointer to the ``sycl::queue``. - - * - - DepEvents - - - List of dependent DPCTLSyclEventRef objects (events) for the barrier. We call ``sycl::handler.depends_on`` for each of the provided events. - - * - - NDepEvents - - - Size of the DepEvents list. - - - -.. rubric:: Returns: - -An opaque pointer to the ``sycl::event`` returned by the ``sycl::queue::submit_barrier()`` function. - -.. index:: pair: function; DPCTLCString_Delete -.. _doxid-da/d48/dpctl__utils_8h_1a33267597953b5a15fc3a052e0d09ef06: - -.. ref-code-block:: cpp - :class: doxyrest-title-code-block - - :ref:`DPCTL_C_EXTERN_C_BEGIN` :ref:`DPCTL_API` void - DPCTLCString_Delete(:ref:`__dpctl_take` const char* str) - -Deletes the C String argument. - - - -.. rubric:: Parameters: - -.. list-table:: - :widths: 20 80 - - * - - str - - - C string to be deleted - -.. index:: pair: function; DPCTLSize_t_Array_Delete -.. _doxid-da/d48/dpctl__utils_8h_1a8666dbbe5583326eb3b57293be168ffc: - -.. ref-code-block:: cpp - :class: doxyrest-title-code-block - - :ref:`DPCTL_API` void - DPCTLSize_t_Array_Delete(:ref:`__dpctl_take` size_t* arr) - -Deletes an array of size_t elements. - - - -.. rubric:: Parameters: - -.. list-table:: - :widths: 20 80 - - * - - arr - - - Array to be deleted. - -Macros ------- - -.. index:: pair: define; DPCTL_DECLARE_VECTOR_TYPE -.. _doxid-d4/d64/dpctl__vector_8h_1a83a0669601a2adec6b227cc2276a1538: - -.. ref-code-block:: cpp - :class: doxyrest-title-code-block - - #define DPCTL_DECLARE_VECTOR_TYPE(EL) - -Declare an opaque pointer type for a std::vector of opaque pointers wrapping SYCL data types. - -.. index:: pair: define; HUGE_VALF -.. _doxid-dd/d1c/dpctl__data__types_8h_1acd69981d54c27fe0ff514645dbfc6359: - -.. ref-code-block:: cpp - :class: doxyrest-title-code-block - - #define HUGE_VALF - -Represents a positive expression of type float. - -.. index:: pair: define; INT64_MAX -.. _doxid-dd/d1c/dpctl__data__types_8h_1ad0d744f05898e32d01f73f8af3cd2071: - -.. ref-code-block:: cpp - :class: doxyrest-title-code-block - - #define INT64_MAX - -Represents the largest possible value of a 64 bit signed integer. - -.. index:: pair: define; INT64_MIN -.. _doxid-dd/d1c/dpctl__data__types_8h_1ab21f12f372f67b8ff0aa3432336ede67: - -.. ref-code-block:: cpp - :class: doxyrest-title-code-block - - #define INT64_MIN - -Represents the smallest possible value of a 64 bit signed integer. - -.. index:: pair: define; UINT64_MAX -.. _doxid-dd/d1c/dpctl__data__types_8h_1a30654b4b67d97c42ca3f9b6052dda916: - -.. ref-code-block:: cpp - :class: doxyrest-title-code-block - - #define UINT64_MAX - -Represents the largest possible value of a 64bit unsigned integer. - diff --git a/pulls/1961/_sources/api_reference/libsyclinterface/generated/group_DeviceManager.rst.txt b/pulls/1961/_sources/api_reference/libsyclinterface/generated/group_DeviceManager.rst.txt deleted file mode 100644 index ee26c9fb06..0000000000 --- a/pulls/1961/_sources/api_reference/libsyclinterface/generated/group_DeviceManager.rst.txt +++ /dev/null @@ -1,11 +0,0 @@ -.. index:: pair: group; Device class helper functions -.. _doxid-dc/ddc/group___device_manager: - -Device class helper functions -============================= - -.. toctree:: - :hidden: - -Helper functions for sycl::device objects that do not directly map to any sycl::device member function. - diff --git a/pulls/1961/_sources/api_reference/libsyclinterface/generated/group_PlatformManager.rst.txt b/pulls/1961/_sources/api_reference/libsyclinterface/generated/group_PlatformManager.rst.txt deleted file mode 100644 index 818931d3a2..0000000000 --- a/pulls/1961/_sources/api_reference/libsyclinterface/generated/group_PlatformManager.rst.txt +++ /dev/null @@ -1,11 +0,0 @@ -.. index:: pair: group; Platform class helper functions -.. _doxid-d5/dcf/group___platform_manager: - -Platform class helper functions -=============================== - -.. toctree:: - :hidden: - -Helper functions for ``sycl::platform`` objects that do not directly map to any ``sycl::platform`` member function. - diff --git a/pulls/1961/_sources/api_reference/libsyclinterface/generated/index.rst.txt b/pulls/1961/_sources/api_reference/libsyclinterface/generated/index.rst.txt deleted file mode 100644 index e9f449b8cf..0000000000 --- a/pulls/1961/_sources/api_reference/libsyclinterface/generated/index.rst.txt +++ /dev/null @@ -1,35 +0,0 @@ -libsyclinterface -================ - -.. toctree:: - :hidden: - - group_DeviceManager.rst - group_PlatformManager.rst - -.. rubric:: Further Reading: - -| :ref:`Device class helper functions` -| :ref:`Platform class helper functions` - - -.. toctree:: - :hidden: - - page_todo.rst - -.. rubric:: Related Pages: - -| :doc:`page_todo` - - -.. rubric:: Reference and Index: - -.. toctree:: - :hidden: - - global.rst - -| :doc:`global` -| :ref:`genindex` - diff --git a/pulls/1961/_sources/api_reference/libsyclinterface/generated/namespace_dpctl.rst.txt b/pulls/1961/_sources/api_reference/libsyclinterface/generated/namespace_dpctl.rst.txt deleted file mode 100644 index e911c00079..0000000000 --- a/pulls/1961/_sources/api_reference/libsyclinterface/generated/namespace_dpctl.rst.txt +++ /dev/null @@ -1,25 +0,0 @@ -.. index:: pair: namespace; dpctl -.. _doxid-d2/df1/namespacedpctl: - -namespace dpctl -=============== - -.. toctree:: - :hidden: - - namespace_dpctl_syclinterface.rst - - - - -.. ref-code-block:: cpp - :class: doxyrest-overview-code-block - - - namespace dpctl { - - // namespaces - - namespace :ref:`dpctl::syclinterface`; - - } // namespace dpctl diff --git a/pulls/1961/_sources/api_reference/libsyclinterface/generated/namespace_dpctl_syclinterface.rst.txt b/pulls/1961/_sources/api_reference/libsyclinterface/generated/namespace_dpctl_syclinterface.rst.txt deleted file mode 100644 index 1376c5aef5..0000000000 --- a/pulls/1961/_sources/api_reference/libsyclinterface/generated/namespace_dpctl_syclinterface.rst.txt +++ /dev/null @@ -1,35 +0,0 @@ -.. index:: pair: namespace; dpctl::syclinterface -.. _doxid-d1/d06/namespacedpctl_1_1syclinterface: - -namespace dpctl::syclinterface -============================== - -.. toctree:: - :hidden: - - class_dpctl_syclinterface_dpctl_accelerator_selector.rst - class_dpctl_syclinterface_dpctl_cpu_selector.rst - class_dpctl_syclinterface_dpctl_default_selector.rst - class_dpctl_syclinterface_dpctl_device_selector.rst - class_dpctl_syclinterface_dpctl_filter_selector.rst - class_dpctl_syclinterface_dpctl_gpu_selector.rst - - - - -.. ref-code-block:: cpp - :class: doxyrest-overview-code-block - - - namespace syclinterface { - - // classes - - class :ref:`dpctl_accelerator_selector`; - class :ref:`dpctl_cpu_selector`; - class :ref:`dpctl_default_selector`; - class :ref:`dpctl_device_selector`; - class :ref:`dpctl_filter_selector`; - class :ref:`dpctl_gpu_selector`; - - } // namespace syclinterface diff --git a/pulls/1961/_sources/api_reference/libsyclinterface/generated/page_todo.rst.txt b/pulls/1961/_sources/api_reference/libsyclinterface/generated/page_todo.rst.txt deleted file mode 100644 index 9bcef778fa..0000000000 --- a/pulls/1961/_sources/api_reference/libsyclinterface/generated/page_todo.rst.txt +++ /dev/null @@ -1,28 +0,0 @@ -.. index:: pair: page; Todo List -.. _doxid-dd/da0/todo: - -Todo List -========= - -.. list-table:: - :widths: 20 80 - - * - - Global :ref:`DPCTLKernelArgType ` - - - :target:`doxid-dd/da0/todo_1_todo000001` Add support for sycl::buffer - - * - - Global :ref:`DPCTLQueue_SubmitNDRange ` (\__dpctl_keep const DPCTLSyclKernelRef KRef, \__dpctl_keep const DPCTLSyclQueueRef QRef, \__dpctl_keep void \*\*Args, \__dpctl_keep const DPCTLKernelArgType \*ArgTypes, size_t NArgs, \__dpctl_keep const size_t gRange[3], \__dpctl_keep const size_t lRange[3], size_t NDims, \__dpctl_keep const DPCTLSyclEventRef \*DepEvents, size_t NDepEvents) - - - :target:`doxid-dd/da0/todo_1_todo000003` sycl::buffer arguments are not supported yet. - - Add support for id WorkItemOffset - - * - - Global :ref:`DPCTLQueue_SubmitRange ` (\__dpctl_keep const DPCTLSyclKernelRef KRef, \__dpctl_keep const DPCTLSyclQueueRef QRef, \__dpctl_keep void \*\*Args, \__dpctl_keep const DPCTLKernelArgType \*ArgTypes, size_t NArgs, \__dpctl_keep const size_t Range[3], size_t NRange, \__dpctl_keep const DPCTLSyclEventRef \*DepEvents, size_t NDepEvents) - - - :target:`doxid-dd/da0/todo_1_todo000002` ``sycl::buffer`` arguments are not supported yet. - - Add support for id WorkItemOffset - diff --git a/pulls/1961/_sources/api_reference/libsyclinterface/generated/struct_MDLocalAccessorTy.rst.txt b/pulls/1961/_sources/api_reference/libsyclinterface/generated/struct_MDLocalAccessorTy.rst.txt deleted file mode 100644 index 60a399ee4c..0000000000 --- a/pulls/1961/_sources/api_reference/libsyclinterface/generated/struct_MDLocalAccessorTy.rst.txt +++ /dev/null @@ -1,27 +0,0 @@ -.. index:: pair: struct; MDLocalAccessorTy -.. _doxid-db/dfd/struct_m_d_local_accessor_ty: - -struct MDLocalAccessorTy -======================== - -.. toctree:: - :hidden: - -Structure to be used to specify dimensionality and type of local_accessor kernel type argument. - - -.. ref-code-block:: cpp - :class: doxyrest-overview-code-block - - #include - - struct MDLocalAccessorTy - { - // fields - - size_t :target:`dim0`; - size_t :target:`dim1`; - size_t :target:`dim2`; - :ref:`DPCTLKernelArgType` :target:`dpctl_type_id`; - size_t :target:`ndim`; - }; diff --git a/pulls/1961/_sources/api_reference/libsyclinterface/index.rst.txt b/pulls/1961/_sources/api_reference/libsyclinterface/index.rst.txt deleted file mode 100644 index 125c406ab0..0000000000 --- a/pulls/1961/_sources/api_reference/libsyclinterface/index.rst.txt +++ /dev/null @@ -1,15 +0,0 @@ -.. _libsyclinterface: - -C Library SyclInterface -======================== - -:py:mod:`dpctl` contains the SyclInterface library which provides C APIs to a subset of functionality exposed in DPC++ runtime classes. - -The C API was necessary to support the :py:mod:`numba_dpex` project to use DPC++ runtime classes from LLVM it generates. - -Full :doc:`API reference ` is generated using doxyrest from doxygen strings. - -.. toctree:: - :hidden: - - generated/index diff --git a/pulls/1961/_sources/beginners_guides/index.rst.txt b/pulls/1961/_sources/beginners_guides/index.rst.txt deleted file mode 100644 index eeac66484b..0000000000 --- a/pulls/1961/_sources/beginners_guides/index.rst.txt +++ /dev/null @@ -1,47 +0,0 @@ -.. _beginners_guides: - -================= -Beginner's guides -================= - -Introduction ------------- - -:mod:`dpctl` brings the standard-based execution model to program a heterogeneous system -to Python through invocations of oneAPI-based native libraries, their Python interfaces, -or by using DPC++-based Python native extensions built using :mod:`dpctl` integration with -Python native extension generators. - -The :py:mod:`dpctl` runtime is built on top of the C++ SYCL 2020 standard as implemented in the -`Intel(R) oneAPI DPC++ compiler `_ and is designed to be both vendor and -architecture agnostic. - -Installation ------------- - -* :ref:`Installing ` :mod:`dpctl` -* Setting up drivers - -Working with devices --------------------- - -* :ref:`Managing devices ` - -Introduction to array library ------------------------------ - -* :ref:`Getting started ` with :mod:`dpctl.tensor` - -Miscellaneous -------------- - -* History of ``"dpctl"`` :ref:`name ` -* Frequently asked questions - -.. toctree:: - :hidden: - - installation - managing_devices - tensor_intro - misc diff --git a/pulls/1961/_sources/beginners_guides/installation.rst.txt b/pulls/1961/_sources/beginners_guides/installation.rst.txt deleted file mode 100644 index 84a7f15cb7..0000000000 --- a/pulls/1961/_sources/beginners_guides/installation.rst.txt +++ /dev/null @@ -1,216 +0,0 @@ -.. _dpctl_installation: - -#################### -Installing ``dpctl`` -#################### - -License -======= - -:py:mod:`dpctl` is licensed under Apache* License 2.0 that can be found in the -`LICENSE `_ file. -All usage and contributions to the project are subject to the terms and -conditions of this license. - -.. _dpctl_license: https://github.com/IntelPython/dpctl/blob/master/LICENSE - -See the user guide :ref:`document ` for additional information. - -Installation using conda -======================== - -Binary builds of :py:mod:`dpctl` are available for the `conda package manager `_ -ecosystem. - -.. _conda_docs: https://docs.conda.io/projects/conda/en/stable/ - -Released versions of the package can be installed from the Intel channel, as -indicated by ``--channel`` option: - -.. code-block:: bash - :caption: Getting latest released version of ``dpctl`` using conda - - conda create --name dpctl_env --channel https://software.repos.intel.com/python/conda/ --channel conda-forge dpctl - -Development builds of ``dpctl`` can be accessed from the ``dppy/label/dev`` channel: - -.. code-block:: bash - :caption: Getting latest development version - - conda create -n dpctl_nightly -c dppy/label/dev -c https://software.repos.intel.com/python/conda/ -c conda-forge dpctl - -.. note:: - If :py:mod:`dpctl` is not available for the Python version of interest, - see `Building from source`_. - - -Installation using pip -====================== - -Binary wheels are published with Python Package Index (https://pypi.org/project/dpctl/). - -.. code-block:: bash - :caption: Getting latest released version of ``dpctl`` using ``pip`` - - python -m pip install dpctl - - -Binary wheels of ``dpctl`` and its dependencies are also published on Intel(R) channel. To install from this non-default package index, -use - -.. code-block:: bash - - python -m pip install --index-url https://software.repos.intel.com/python/pypi dpctl - -.. note:: - As of April 2024, installation using ``pip`` on Linux* requires - that host operating system had ``libstdc++.so`` library version 6.0.29 - or later. Check the version you have by executing - ``find /lib/x86_64-linux-gnu/ -name "libstdc++*"`` - -.. note:: - If :py:mod:`dpctl` is not available for the Python version of interest, - see `Building from source`_. - - -Installation via Intel(R) Distribution for Python -================================================= - -`Intel(R) Distribution for Python* `_ is distributed as a conda-based installer -and includes :py:mod:`dpctl` along with its dependencies and sister projects :py:mod:`dpnp` -and :py:mod:`numba_dpex`. - -.. _idp_page: https://www.intel.com/content/www/us/en/developer/tools/oneapi/distribution-for-python.html - -Once the installed environment is activated, ``dpctl`` should be ready to use. - -System requirements -=================== - -Since :py:mod:`dpctl` is compiled using the Intel(R) oneAPI DPC++ compiler, -the `compiler's system requirements for runtime `_ must be met. - -In order for DPC++ runtime to recognize supported hardware appropriate drivers must be installed. -Directions to install drivers for Intel GPU devices are available at https://dgpu-docs.intel.com/ - -.. _dpcpp_system_reqs: https://www.intel.com/content/www/us/en/developer/articles/system-requirements/intel-oneapi-dpcpp-system-requirements.html - -Once ``dpctl`` is installed, use ``python -m dpctl --full-list`` to list recognized devices. - -For ``dpctl`` to target Intel GPU devices, appropriate drivers should be installed systemwide. -Please refer to `GPU installation guide `_ for detailed -instructions on how to install required drivers on Linux. - -.. _gpu_stack_installation_guide: https://dgpu-docs.intel.com/ - -.. note:: - Instructions for setting up GPU drivers in Windows Subsystem for Linux (WSL) - will be added in a future release of this document. - -Building from source -==================== - -There are several reasons to want to build ``dpctl`` from source: - -1. To use it with Python version for which binary artifacts are not available -2. To be able to use DPC++ runtime libraries from local installation of DPC++ compiler and - avoid installing them into Python environment -3. To build for custom SYCL targets, such as ``nvptx64-nvidia-cuda`` or ``"amdgcn-amd-amdhsa"``. - -Building locally for use with oneAPI DPC++ installation -------------------------------------------------------- - -Working with :py:mod:`dpctl` in this mode assumes that the DPC++ compiler is activated, and that -Python environment has all build and runtime dependencies of ``dpctl`` installed. - -One way to create such environment is as follows: - -.. code-block:: bash - :caption: Creation of environment to build ``dpctl`` locally - - conda create -n dev_dpctl -c conda-forge python=3.12 pip - conda activate dev_dpctl - pip install --no-cache-dir numpy cython scikit-build cmake ninja pytest - -Using such environment and with DPC++ compiler activated, build the project using - -.. code-block:: bash - - python scripts/build_locally.py --verbose - -.. note:: - Coming back to use this local build of ``dpctl`` remember to activate DPC++. - -Building for custom SYCL targets --------------------------------- - -Project :py:mod:`dpctl` is written using generic SYCL and supports building for -multiple SYCL targets, subject to limitations of `CodePlay `_ -plugins implementing SYCL programming model for classes of devices. - -Building ``dpctl`` for these targets requires that these CodePlay plugins be -installed into DPC++ installation layout of compatible version. -The following plugins from CodePlay are supported: - - - `oneAPI for NVIDIA(R) GPUs `_ - - `oneAPI for AMD GPUs `_ - -.. _codeplay_nv_plugin: https://developer.codeplay.com/products/oneapi/nvidia/ -.. _codeplay_amd_plugin: https://developer.codeplay.com/products/oneapi/amd/ - -``dpctl`` can be built for CUDA devices as follows: - -.. code-block:: bash - - python scripts/build_locally.py --verbose --cmake-opts="-DDPCTL_TARGET_CUDA=ON" - -And for AMD devices - -.. code-block:: bash - - python scripts/build_locally.py --verbose --cmake-opts="-DDPCTL_TARGET_HIP=gfx1030" - -Note that the `oneAPI for AMD GPUs` plugin requires the architecture be specified and only -one architecture can be specified at a time. - -It is, however, possible to build for Intel devices, CUDA devices, and an AMD device -architecture all at once: - -.. code-block:: bash - - python scripts/build_locally.py --verbose --cmake-opts="-DDPCTL_TARGET_CUDA=ON \ - -DDPCTL_TARGET_HIP=gfx1030" - -Running Examples and Tests -========================== - -Running the Examples --------------------- - -After setting up dpctl, you can test the Python examples as follows: - -.. code-block:: bash - - for script in `ls examples/python/` - do - echo "executing ${script}" - python examples/python/${script} - done - -The :py:mod:`dpctl` repository also provides a set of `examples `_ -of building Cython and pybind11 extensions with the DPC++ compiler that interoperate -with :py:mod:`dpctl`. - -.. _examples_sources: https://github.com/IntelPython/dpctl/tree/master/examples/ - -Please refer to the ``README.md`` file in respective folders for instructions on how to build -each example Python project and how to execute its test suite. - -Running the Python Tests ------------------------- - -You can execute Python test suite of :py:mod:`dpctl` with: - -.. code-block:: bash - - pytest --pyargs dpctl diff --git a/pulls/1961/_sources/beginners_guides/managing_devices.rst.txt b/pulls/1961/_sources/beginners_guides/managing_devices.rst.txt deleted file mode 100644 index cb1303e174..0000000000 --- a/pulls/1961/_sources/beginners_guides/managing_devices.rst.txt +++ /dev/null @@ -1,355 +0,0 @@ -.. _beginners_guide_managing_devices: - -################ -Managing devices -################ - -.. _beginners_guide_enumerating_devices: - -Enumerating available devices -============================= - -Listing platform from command-line ------------------------------------ - -:py:mod:`dpctl` provides command-line interface to list available platforms: - -.. code-block:: bash - :caption: List platforms with detailed information on devices - - python -m dpctl --full-list - -A sample output of executing such a command on a laptop: - -.. code-block:: text - :caption: Sample output of running ``python -m dpctl --full-list`` - - Platform 0 :: - Name Intel(R) FPGA Emulation Platform for OpenCL(TM) - Version OpenCL 1.2 Intel(R) FPGA SDK for OpenCL(TM), Version 20.3 - Vendor Intel(R) Corporation - Backend opencl - Num Devices 1 - # 0 - Name Intel(R) FPGA Emulation Device - Version 2024.17.2.0.22_223154 - Filter string opencl:accelerator:0 - Platform 1 :: - Name Intel(R) OpenCL - Version OpenCL 3.0 LINUX - Vendor Intel(R) Corporation - Backend opencl - Num Devices 1 - # 0 - Name 11th Gen Intel(R) Core(TM) i7-1185G7 @ 3.00GHz - Version 2024.17.2.0.22_223154 - Filter string opencl:cpu:0 - Platform 2 :: - Name Intel(R) OpenCL Graphics - Version OpenCL 3.0 - Vendor Intel(R) Corporation - Backend opencl - Num Devices 1 - # 0 - Name Intel(R) Graphics [0x9a49] - Version 23.52.28202.26 - Filter string opencl:gpu:0 - Platform 3 :: - Name Intel(R) Level-Zero - Version 1.3 - Vendor Intel(R) Corporation - Backend ext_oneapi_level_zero - Num Devices 1 - # 0 - Name Intel(R) Graphics [0x9a49] - Version 1.3.28202 - Filter string level_zero:gpu:0 - -.. currentmodule:: dpctl - -Command-line interface is useful for verifying that drivers are installed correctly. -It is implemented using :py:func:`lsplatform` function. - -.. note:: - The output on your particular heterogeneous system may vary, depending on available hardware and drivers installed. - -Listing devices programmatically --------------------------------- - -Devices can also be discovered programmatically, either by using :py:func:`lsplatform` to :py:func:`print` the listing or -by using :py:func:`get_devices` to obtain a list of :py:class:`SyclDevice` objects suitable for further processing. - -.. code-block:: python - :caption: Example: Obtaining list of available devices for processing - - import dpctl - - # get all available devices - devices = dpctl.get_devices() - - # get memory of each in GB - {d.name: d.global_mem_size // (1024 ** 3) for d in devices} - - -.. _beginners_guide_oneapi_device_selector: - -Interaction with DPC++ environment variables --------------------------------------------- - -:py:mod:`dpctl` relies on DPC++ runtime for device discovery and is :ref:`subject ` to -environment variables that influence behavior of the runtime. -Setting ``ONEAPI_DEVICE_SELECTOR`` environment variable may restrict the set of devices visible to DPC++ runtime, -and hence to :py:mod:`dpctl`. - -The value of the variable must follow a specific syntax (please refer to -`list of environment variables `_ recognized by oneAPI DPC++ runtime for additional detail). Some examples -of valid settings are: - -.. list-table:: - :header-rows: 1 - - * - Setting - - Availability - - * - ``*:cpu`` - - Only CPU devices from all backends are available - - * - ``!*:cpu`` - - All devices except CPU devices are available - - * - ``*:gpu`` - - Only GPU devices from all backends are available - - * - ``cuda:*`` - - All devices only from CUDA backend are available - - * - ``hip:*`` - - All devices only from HIP backend are available - - * - ``level_zero:0,1`` - - Two specific devices from Level-Zero backend are available - - * - ``level_zero:gpu;cuda:gpu;opencl:cpu`` - - Level-Zero GPU devices, CUDA GPU devices, and OpenCL CPU devices are available - -.. _dpcpp_env_vars: https://intel.github.io/llvm-docs/EnvironmentVariables.html - -.. code-block:: bash - :caption: Example: Setting ``ONEAPI_DEVICE_SELECTOR=*:cpu`` renders GPU devices unavailable even if they are present - - export ONEAPI_DEVICE_SELECTOR=*:cpu - # would only show CPU device - python -m dpctl -f - - unset ONEAPI_DEVICE_SELECTOR - # all available devices are available now - python -m dpctl -f - -.. _beginners_guide_device_selection: - -Device selection -================ - -DPC++ runtime provides a way to select a device with a highest score to for a set of selection scoring strategies. -Amongst these are a default selector, CPU selector, GPU selector, as well as filter-string selector. - -Using fixed device selectors ----------------------------- - -:py:mod:`dpctl` exposes device selection using fixed selectors as free functions: - -.. currentmodule:: dpctl - -.. list-table:: - - * - :py:func:`select_default_device` - - :py:func:`select_gpu_device` - * - :py:func:`select_cpu_device` - - :py:func:`select_accelerator_device` - -:Example: - .. code-block:: python - - >>> import dpctl - >>> dpctl.select_default_device() - - >>> dpctl.select_cpu_device() - - -Also note, that default-constructor of :class:`dpctl.SyclDevice` also creates the default-selected device: - -:Example: - .. code-block:: python - - >>> import dpctl - >>> dpctl.SyclDevice() - - >>> dpctl.select_default_device() - - -Selecting device based on aspects ---------------------------------- - -In addition, :py:func:`select_device_with_aspects` permits selecting a device based on aspects it is required to have: - -.. code-block:: python - :caption: Example: Selecting devices based on their aspects - - import dpctl - - # select a device that support float64 data type - dev1 = dpctl.select_device_with_aspects("fp64") - - # select a device that supports atomic operations on 64-bit types - # in USM-shared allocations - dev2 = dpctl.select_device_with_aspects( - ["atomic64", "usm_atomic_shared_allocations"] - ) - -An aspect string ``asp`` is valid if ``hasattr(dpctl.SyclDevice, "has_aspect_" + asp)`` evaluates to ``True``. - -Selecting device using filter selector string ---------------------------------------------- - -:py:class:`SyclDevice` may also be created using :ref:`filter selector string ` specified -as argument to the class constructor: - -.. code-block:: python - :caption: Example: Creating device based on filter-selector string - - import dpctl - - # create any GPU device - dev_gpu = dpctl.SyclDevice("gpu") - - # take second device GPU device in the list of GPU devices - # 0-based number is used - dev_gpu1 = dpctl.SyclDevice("gpu:1") - - # create GPU device, or CPU if GPU is not available - dev_gpu_or_cpu = dpctl.SyclDevice("gpu,cpu") - -.. _beginners_guide_oneapi_device_selector_usecase: - -Selecting device using ``ONEAPI_DEVICE_SELECTOR`` -------------------------------------------------- - -The device returned by :py:func:`select_default_device`, as well the behavior -of default constructor of :py:class:`SyclDevice` class is influenced by settings -of ``ONEAPI_DEVICE_SELECTOR`` as explained earlier. - -Some users may find it convenient to always use a default-selected device, but control -which device that may be by setting this environment variable. -For example, the following script: - -.. code-block:: python - :caption: Sample array computation script "run.py" - - from dpctl import tensor as dpt - - gamma = 0.34 - x = dpt.linspace(0, 2*dpt.pi, num=10**6) - f = dpt.sin(gamma * x) * dpt.exp(-x) - - int_approx = dpt.sum(f) - print(f"Approximate value of integral: {int_approx} running on {x.device}" ) - -This script may be executed on a CPU, or GPU as follows: - -.. code-block:: bash - - # execute on CPU device - ONEAPI_DEVICE_SELECTOR=*:cpu python run.py - # Output: Approximate value of integral: 48328.99708167 running on Device(opencl:cpu:0) - - # execute on GPU device - ONEAPI_DEVICE_SELECTOR=*:gpu python run.py - # Output: Approximate value of integral: 48329. running on Device(level_zero:gpu:0) - - -.. _beginners_guide_device_info: - -Obtaining information about device -================================== - -.. currentmodule:: dpctl - -An instance of :py:class:`SyclDevice` provides access to a collection of -descriptors characterizing underlying ``sycl::device``. - -Properties ``has_aspect_*`` expose Boolean descriptors which can be either ``True`` or ``False``. -Other descriptions are exposed as properties of the instance. - -.. code-block:: python - :caption: Example: Obtaining information about a device - - import dpctl - - # create default-selected device - dev = dpctl.SyclDevice() - - # number of compute units - cu = dev.max_compute_units - # maximal supported size of a work-group - max_wg = dev.max_work_group_size - # size of shared local memory in bytes - loc_mem_sz = dev.local_mem_size - - # name of the device - dname = dev.name - # maximal clock frequency in MHz - freq = dev.max_clock_frequency - - -.. currentmodule:: dpctl.utils - -For Intel GPU devices, additional architectural information can be access with :py:func:`intel_device_info` function: - -.. code-block:: python - :caption: Example: Intel GPU-specific information - - In [1]: import dpctl, dpctl.utils - - In [2]: d_gpu = dpctl.SyclDevice() - - # Output for Iris Xe integerate GPU, with PCI ID 0x9a49 - # (corresponding decimal value: 39497) - In [3]: dpctl.utils.intel_device_info(d_gpu) - Out[3]: - {'device_id': 39497, - 'gpu_eu_count': 96, - 'gpu_hw_threads_per_eu': 7, - 'gpu_eu_simd_width': 8, - 'gpu_slices': 1, - 'gpu_subslices_per_slice': 12, - 'gpu_eu_count_per_subslice': 8} - -Please refer to "Intel(R) Xe GPU Architecture" section of the "`oneAPI GPU Optimization Guide `_" -for detailed explanation of these architectural descriptors. - -.. _gpu_opt_guide: https://www.intel.com/content/www/us/en/docs/oneapi/optimization-guide-gpu/ - -Creating sub-devices -==================== - -Some SYCL devices may support partitioning into logical sub-devices. -Devices created by way of partitioning are treated the same way as unpartitioned devices, and -are represented as instances of :class:`dpctl.SyclDevice` class. - -To partition a device use :meth:`dpctl.SyclDevice.create_sub_devices`. If the device instance -can not be partitioned any further, an exception :exc:`dpctl.SyclSubDeviceCreationError` is raised. - -:Example: - - .. code-block:: python - - >>> import dpctl - >>> cpu = dpctl.select_cpu_device() - >>> sub_devs = cpu.create_sub_devices(partition=[2, 2]) - >>> len(sub_device) - 2 - >>> [d.max_compute_units for d in sub_devs] - [2, 2] - -Sub-devices may be used by expert users to create multiple queues and experiment with load balancing, -study scaling, etc. diff --git a/pulls/1961/_sources/beginners_guides/misc.rst.txt b/pulls/1961/_sources/beginners_guides/misc.rst.txt deleted file mode 100644 index e5aacd56da..0000000000 --- a/pulls/1961/_sources/beginners_guides/misc.rst.txt +++ /dev/null @@ -1,69 +0,0 @@ -.. _beginners_guide_why_dpctl: - -History of ``dpctl`` name -========================= - -SYCL Execution Model --------------------- - -:sycl_spec_2020:`SYCL standard <>` proposes an execution model, in which a -user controls :ref:`execution placement ` by specifying -``sycl::queue`` object as a function argument. This execution model affords -uniform API for executing code on a variety of devices addressable with SYCL: - -.. code-block:: python - :caption: Example of execution on different devices - - # Execute on CPU device - foo(q_cpu, ...) - - # Execute on GPU device from vendor A - foo(q_gpuA, ...) - - # Execute on GPU device from vendor B - foo(q_gpuB, ...) - -oneAPI DPC++ implementation of SYCL ------------------------------------ - -Intel(R) oneAPI DPC++ compiler is an implementation of SYCL standard along -with a set of oneAPI extensions proposed for adoption into the standard. - -DPC++ stands for `Data-Parallel C++ `_, because it brings -:ref:`data parallelism ` to C++ language. - -.. _dpcpp_book: https://link.springer.com/book/10.1007/978-1-4842-5574-2 - -:py:mod:`dpctl` was created out of the need to interact with DPC++ runtime -to control execution placement from LLVM as needed by :py:mod:`numba_dpex`. - -The name Data Parallel ConTroL (DPCTL) stuck. - -.. note:: - :py:mod:`dpctl` is not related to Open vSwitch Data Paths Control program ``osv-dpctl`` - provided by `Open vSwitch`_. - -.. _Open vSwitch: https://www.openvswitch.org/ - -.. _parallelism_definitions: - -Types of parallelisms ---------------------- - -Parallelism refers to an opportunity to work on multiple parts of a problem independently. - -Exploiting parallelism requires capable hardware to work on more than one thing at a time, -such as GPUs or multi-core CPUs. - -Two commonly encountered types of parallelism are: - -* Task parallelism - problem is decomposed into independent tasks. -* Data parallelism - same task can be independently performed on different data inputs. - - -`Intel(R) oneAPI DPC++ `_ compiler implements SYCL standard which brings data parallelism to C++ language, -so it is appropriate that DPC++ stands for data-parallel C++. Please refer to open access book "`Data Parallel C++ `_" -by J. Rainders, et. al. for a great introduction. - -.. _intel_oneapi_dpcpp: https://www.intel.com/content/www/us/en/developer/tools/oneapi/data-parallel-c-plus-plus.html -.. _mastering_dpcpp_book: https://link.springer.com/book/10.1007/978-1-4842-5574-2 diff --git a/pulls/1961/_sources/beginners_guides/tensor_intro.rst.txt b/pulls/1961/_sources/beginners_guides/tensor_intro.rst.txt deleted file mode 100644 index 7327fa556f..0000000000 --- a/pulls/1961/_sources/beginners_guides/tensor_intro.rst.txt +++ /dev/null @@ -1,287 +0,0 @@ -.. _beginners_guide_tensor_intro: - -Intro to :py:mod:`dpctl.tensor` -=============================== - -Supported array data types --------------------------- - -The tensor submodule provides an N-dimensional array object for a tensor whose values have the same data type -from the :ref:`following list `: - -.. currentmodule:: dpctl.tensor - -.. list-table:: - - * - - - :attr:`int8` - - :attr:`int16` - - :attr:`int32` - - :attr:`int64` - - - - :attr:`float16` - - :attr:`float32` - - :attr:`complex64` - - * - :attr:`bool` - - :attr:`uint8` - - :attr:`uint16` - - :attr:`uint32` - - :attr:`uint64` - - - - - - :attr:`float64` - - :attr:`complex128` - - -Creating an array ------------------ - -Array :ref:`creation functions ` support keyword arguments that -control the device where the array is allocated as well as aspects of -:ref:`Unified Shared Memory allocation ` for the array. - -These three keywords are: - -.. list-table:: - :header-rows: 1 - - * - Keyword arguments - - Default value - - Description - * - ``usm_type`` - - ``"device"`` - - type of USM allocation to make - * - ``device`` - - ``None`` - - :py:class:`dpctl.tensor.Device` instance - * - ``sycl_queue`` - - ``None`` - - Instance of :class:`dpctl.SyclQueue` associated with array - -Arguments ``sycl_queue`` and ``device`` are complementary to each other, and -a user need only provide one of these. - -A valid setting for the ``device`` keyword argument is any object that can be passed to :py:meth:`dpctl.tensor.Device.create_device`. -If both ``device`` and ``sycl_queue`` keyword arguments are specified, they must correspond to :class:`dpctl.SyclQueue` instances which -compare equal to one another. - -A created instance of :class:`usm_ndarray` has an associated :class:`dpctl.SyclQueue` instance that can be retrieved -using :attr:`dpctl.tensor.usm_ndarray.sycl_queue` property. The underlying USM allocation -is allocated on :class:`dpctl.SyclDevice` and is bound to :class:`dpctl.SyclContext` targeted by this queue. - -.. _dpctl_tensor_compute_follows_data: - -Execution model ---------------- - -When one of more instances of ``usm_ndarray`` objects are passed to a function in :py:mod:`dpctl.tensor` other than creation function, -a "compute follows data" execution model is followed. - -The model requires that :class:`dpctl.SyclQueue` instances associated with each array compared equal to one another, signifying that -each one corresponds to the same underlying ``sycl::queue`` object. In such a case, the output array is associated with the same -``sycl::queue`` and computations are scheduled for execution using this ``sycl::queue``. - -.. note:: - Two instances :class:`dpctl.SyclQueue` may target the same ``sycl::device`` and be using the same ``sycl::context``, but correspond - to different scheduling entries, and hence be in violation of the compute-follows-data requirement. One common example of this are - ``SyclQueue`` corresponding to default-selected device and using platform default context but created using different properties, e.g. - one with `"enable_profiling"` set and another without it. - -If input arrays do not conform to the compute-follows-data requirements, :py:exc:`dpctl.utils.ExecutionPlacementError` is raised. -User must explicitly migrate the data to unambiguously control the execution placement. - -.. _dpctl_tensor_array_migration: - -Migrating arrays ----------------- - -Array content can be migrated to a different device :ref:`using ` -either :meth:`dpctl.tensor.usm_ndarray.to_device` method, or by using :func:`dpctl.tensor.asarray` function. - -The ``arr.to_device(device=target_device)`` method will be zero-copy if the ``arr.sycl_queue`` and the :class:`dpctl.SyclQueue` -instance associated with new target device have the same underlying ``sycl::device`` and ``sycl::context`` instances. - -Here is an example of migration without a copy using ``.to_device`` method: - -.. code-block:: python - :caption: Example: Use ``.to_device`` to zero-copy migrate array content to be associated with a different ``sycl::queue`` - - import dpctl - from dpctl import tensor - - x = tensor.linspace(0, 1, num=10**8) - q_prof = dpctl.SyclQueue(x.sycl_context, x.sycl_device, property="enable_profiling") - - timer = dpctl.SyclTimer() - # no data migration takes place here (zero-copy), - # but x and x1 arrays do not satify compute-follows-data requirements - x1 = x.to_device(q_prof) - - with timer(q_prof): - y1 = tensor.sin(2*x1)*tensor.exp(-tensor.square(x1)) - - # also a zero copy operation - y = y1.to_device(x.device) - - host_dt, device_dt = timer.dt - print(f"Execution on device {x.sycl_device.name} took {device_dt} seconds") - print(f"Execution on host took {host_dt} seconds") - -Data migration when the current and the target SYCL contexts are different is performed via host. That means that data are copied from -the current device to the host, and then from the host to the target device: - -.. code-block:: python - :caption: Example: Using ``.to_device`` to migrate data may involve copy via host - - from dpctl import tensor - - x_cpu = tensor.concat((tensor.ones(10, device="cpu"), tensor.zeros(1000, device="cpu"))) - - # data migration is performed via host - x_gpu = x_cpu.to_device("gpu") - -An alternative way to migrate data is to use :py:func:`asarray` and specify device-placement keyword arguments: - -.. code-block:: python - :caption: Example: Using ``asarray`` to migrate data may involve copy via host - - from dpctl import tensor - - x_cpu = tensor.concat((tensor.ones(10, device="cpu"), tensor.zeros(1000, device="cpu"))) - - # data migration is performed via host - x_gpu = tensor.asarray(x_cpu, device="cpu") - -An advantage of using the function ``asarray`` is that migration from ``usm_ndarray`` instances allocated on different -devices as well migration from :py:class:`numpy.ndarray` may be accomplished in a single call: - -.. code-block:: python - :caption: Example: ``asarray`` may migrate multiple arrays - - from dpctl import tensor - import numpy - - x_cpu = tensor.ones((10, 10), device="cpu") - x_gpu = tensor.zeros((10, 10), device="opencl:gpu") - x_np = numpy.random.randn(10, 10) - - # Array w has shape (3, 10, 10) - w = tensor.asarray([x_cpu, x_gpu, x_np], device="level_zero:gpu") - -Migration may also occur during calls to other array creation functions, e.g., :py:func:`full` when the `fill_value` parameter is an instance -of :py:class:`usm_ndarray`. In such a case default values of device placement keywords are interpreted to avoid data migration, i.e., the -new array is created on the same device where `fill_value` array was allocated. - -.. code-block:: python - :caption: Example: Using ``usm_ndarray`` as arguments to array construction _dpctl_tensor_utility_functions - - from dpctl import tensor - - # Zero-dimensional array allocated on CPU device - pi_on_device = tensor.asarray(tensor.pi, dtype=tensor.float32, device="cpu") - - # x will also be allocated on CPU device - x = tensor.full(shape=(100, 100), fill_value=pi_on_device) - - # Create array on GPU. Migration of `pi_on_device` to GPU via host - # takes place under the hood - y_gpu = tensor.full(shape=(100, 100), fill_value=pi_on_device, device="gpu") - - -Combining arrays with different USM types ------------------------------------------ - -For functions with single argument the returned array has the same ``usm_type`` as the input array. - -Functions that combine several ``usm_ndarray`` instances the ``usm_type`` of the output array is determined -using the following coercion rule: - -+------------+----------+----------+----------+ -| | "device" | "shared" | "host" | -+------------+----------+----------+----------+ -| "device" | "device" | "device" | "device" | -+------------+----------+----------+----------+ -| "shared" | "device" | "shared" | "shared" | -+------------+----------+----------+----------+ -| "host" | "device" | "shared" | "host" | -+------------+----------+----------+----------+ - -If assigning USM-type "device" a score of 0, USM-type "shared" a score of 1, and USM-type "host" a score of 2, -the USM-type of the output array has the smallest score of all its inputs. - -.. currentmodule:: dpctl.utils - -The convenience function :py:func:`get_coerced_usm_type` is a convenience function to determine the USM-type -following this convention: - -.. code-block:: python - - from dpctl.utils import get_coerced_usm_type - - # r1 has value "device" - r1 = get_coerced_usm_type(["device", "shared", "host"]) - - # r2 has value "shared" - r2 = get_coerced_usm_type(["shared", "shared", "host"]) - - # r3 has value "host" - r3 = get_coerced_usm_type(["host", "host", "host"]) - -Sharing data between devices and Python ---------------------------------------- - -Python objects, such as sequences of :class:`int`, :class:`float`, or :class:`complex` objects, -or NumPy arrays can be converted to :class:`dpctl.tensor.usm_ndarray` using :func:`dpctl.tensor.asarray` -function. - -.. code-block:: python - - >>> from dpctl import tensor as dpt - >>> import numpy as np - >>> import mkl_random - - >>> # Sample from true random number generator - >>> rs = mkl_random.RandomState(brng="nondeterm") - >>> x_np = rs.uniform(-1, 1, size=(6, 512)).astype(np.float32) - - >>> # copy data to USM-device (default) allocated array - >>> x_usm = dpt.asarray(x_np) - >>> dpt.max(x_usm, axis=1) - usm_ndarray([0.9998379 , 0.9963589 , 0.99818915, 0.9975991 , 0.9999802 , - 0.99851537], dtype=float32) - >>> np.max(x_np, axis=1) - array([0.9998379 , 0.9963589 , 0.99818915, 0.9975991 , 0.9999802 , - 0.99851537], dtype=float32) - -The content of :class:`dpctl.tensor.usm_ndarray` may be copied into -a NumPy array using :func:`dpctl.tensor.asnumpy` function: - -.. code-block:: python - - from dpctl import tensor as dpt - import numpy as np - - def sieve_pass(r : dpt.usm_ndarray, v : dpt.usm_ndarray) -> dpt.usm_ndarray: - "Single pass of sieve of Eratosthenes" - m = dpt.min(r[r > v]) - r[ (r > m) & (r % m == 0) ] = 0 - return m - - def sieve(n : int) -> dpt.usm_ndarray: - "Find primes <=n using sieve of Erathosthenes" - idt = dpt.int32 - s = dpt.concat(( - dpt.arange(2, 3, dtype=idt), - dpt.arange(3, n + 1, 2, dtype=idt) - )) - lb = dpt.zeros(tuple(), dtype=idt) - while lb * lb < n + 1: - lb = sieve_pass(s, lb) - return s[s > 0] - - # get prime numbers <= a million into NumPy array - # to save to disk - ps_np = dpt.asnumpy(sieve(10**6)) - - np.savetxt("primes.txt", ps_np, fmt="%d") diff --git a/pulls/1961/_sources/contributor_guides/building.rst.txt b/pulls/1961/_sources/contributor_guides/building.rst.txt deleted file mode 100644 index cc7fb7f886..0000000000 --- a/pulls/1961/_sources/contributor_guides/building.rst.txt +++ /dev/null @@ -1,232 +0,0 @@ -.. _dpctl_building_from_source: - -Building from the Source -======================== - -To build :py:mod:`dpctl` from the source, you need DPC++ compiler. -To run examples and test suite you would need GPU drivers and/or CPU -OpenCL drivers. It is preferable to use the Intel(R) oneAPI DPC++ compiler -available as part of oneAPI Base-Kit. However, it is possible to use a custom -build of DPC++ to build :py:mod:`dpctl`, especially if you want to enable -CUDA support or try latest features. - -Building using oneAPI DPC++ ---------------------------- - - -Prerequisites -~~~~~~~~~~~~~ - -Install oneAPI and graphics drivers according to your targeted hardware: - - -- To target Intel GPUs, see the `Installation Page `_ - of the Intel(R) software for general purpose GPU capabilities document for - driver information. -- To target NVIDIA* or AMD* GPUs, see the vendor website for drivers, as well - as `CodePlay plugins `_ to - enable hardware targeting. -- To target a CPU, the OpenCL* CPU driver is included as a part of the - oneAPI DPC++ Compiler installation. The CPU - driver is also packaged in conda, and is automatically made available using - conda activation scripts on Linux*, and on Windows* (in user-mode). - If conda is used with elevated privileges in Windows (similar to - GitHub Actions CI), a PowerShell script must be run: - - .. code-block:: powershell - - &$Env:CONDA_PREFIX\Scripts\script_name.ps1 - -Use the script ``set-intel-ocl-icd-registry.ps1`` to set -appropriate registry key, and ``unset-intel-ocl-icd-registry.ps1`` -to remove it. - - -Activate oneAPI -~~~~~~~~~~~~~~~ - -On Linux OS - -.. code-block:: bash - - source ${ONEAPI_ROOT}/setvars.sh - -On Windows OS - -.. code-block:: bat - - call "%ONEAPI_ROOT%\setvars.bat" - -Build and Install Using Conda-Build -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -You can use the conda-recipe included with the sources to build the dpctl -package. The advantage of this approach is that all oneAPI library dependencies are -pulled in from oneAPI's local conda channel that is installed as a part of oneAPI. - -.. code-block:: bash - - export ONEAPI_ROOT=/opt/intel/oneapi - conda build conda-recipe -c ${ONEAPI_ROOT}/conda_channel - -On Windows OS to cope with `long file names `_, -use ``croot`` with a short folder path: - -.. code-block:: bat - - set "ONEAPI_ROOT=C:\Program Files (x86)\Intel\oneAPI\" - conda build --croot=C:/tmp conda-recipe -c "%ONEAPI_ROOT%\conda_channel" - -After building the Conda package, install it by executing: - -.. code-block:: bash - - conda install dpctl - - -Build and Install with scikit-build -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -To build using Python ``setuptools`` and ``scikit-build``, install the following Python packages: - -- ``cython`` -- ``numpy`` -- ``cmake`` -- ``scikit-build`` -- ``ninja`` -- ``gtest`` (optional to run C API tests) -- ``gmock`` (optional to run C API tests) -- ``pytest`` (optional to run Python API tests) - -Once the prerequisites are installed, building using ``scikit-build`` involves the usual steps. - -To build and install, run: - -.. tab-set:: - - .. tab-item:: Linux - :sync: lnx - - .. code-block:: bash - - python setup.py install -- -G Ninja -DCMAKE_C_COMPILER:PATH=icx -DCMAKE_CXX_COMPILER:PATH=icpx - - .. tab-item:: Windows - :sync: win - - .. code-block:: bat - - python setup.py install -- -G Ninja -DCMAKE_C_COMPILER:PATH=icx -DCMAKE_CXX_COMPILER:PATH=icx - - -To develop, run: - -.. tab-set:: - - .. tab-item:: Linux - :sync: lnx - - .. code-block:: bash - - python setup.py develop -G Ninja -DCMAKE_C_COMPILER:PATH=icx -DCMAKE_CXX_COMPILER:PATH=icpx - - .. tab-item:: Windows - :sync: win - - .. code-block:: bat - - python setup.py develop -G Ninja -DCMAKE_C_COMPILER:PATH=icx -DCMAKE_CXX_COMPILER:PATH=icx - - -Developing can be streamlined using the driver script: - -.. tab-set:: - - .. tab-item:: Linux - :sync: lnx - - .. code-block:: bash - - python scripts/build_locally.py --verbose - - .. tab-item:: Windows - :sync: win - - .. code-block:: bat - - python scripts/build_locally.py --verbose - - -Building Using Custom DPC++ ---------------------------- - -You can build dpctl from the source using the `DPC++ toolchain `_ -instead of the DPC++ compiler that comes with oneAPI. - -Following steps in the `Build and install with scikit-build`_ use a command-line option to set -the relevant CMake variables, for example: - -.. code-block:: bash - - python setup.py develop -- -G Ninja -DCMAKE_C_COMPILER:PATH=$(which clang) -DCMAKE_CXX_COMPILER:PATH=$(which clang++) - - -Or you can use the driver script: - -.. code-block:: bash - - python scripts/build_locally.py --c-compiler=$(which clang) --cxx-compiler=$(which clang++) - - -You can retrieve available options and their descriptions using the option -:code:`--help`. - - -Building the libsyclinterface Library -======================================= - -The libsyclinterface is a shared library used by the Python package. -To build the library, you need: - -* ``DPC++`` toolchain -* ``cmake`` -* ``ninja`` or ``make`` -* Optionally ``gtest 1.10`` if you want to build and run the test suite - -For example, on Linux OS the following script can be used to build the C oneAPI -library. - -.. code-block:: bash - - #!/bin/bash - set +xe - rm -rf build - mkdir build - pushd build || exit 1 - - INSTALL_PREFIX=$(pwd)/../install - rm -rf ${INSTALL_PREFIX} - export ONEAPI_ROOT=/opt/intel/oneapi - # Values are set as appropriate for oneAPI DPC++ 2024.0 - # or later. - DPCPP_ROOT=${ONEAPI_ROOT}/compiler/latest/ - - # Set these to ensure that cmake can find llvm-cov and - # other utilities - LLVM_TOOLS_HOME=${DPCPP_ROOT}/bin/compiler - PATH=$PATH:${DPCPP_ROOT}/bin/compiler - - cmake \ - -DCMAKE_BUILD_TYPE=Debug \ - -DCMAKE_C_COMPILER=icx \ - -DCMAKE_CXX_COMPILER=icpx \ - -DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} \ - -DCMAKE_PREFIX_PATH=${INSTALL_PREFIX} \ - -DDPCTL_ENABLE_L0_PROGRAM_CREATION=ON \ - -DDPCTL_BUILD_CAPI_TESTS=ON \ - -DDPCTL_GENERATE_COVERAGE=ON \ - .. - - make V=1 -n -j 4 && make check && make install - - popd || exit 1 diff --git a/pulls/1961/_sources/contributor_guides/index.rst.txt b/pulls/1961/_sources/contributor_guides/index.rst.txt deleted file mode 100644 index 6c7cb37080..0000000000 --- a/pulls/1961/_sources/contributor_guides/index.rst.txt +++ /dev/null @@ -1,17 +0,0 @@ -.. _contributor_guides: - -============================ -Contributing to :mod:`dpctl` -============================ - -See the `contributing guide `_ -for the information on coding style and standards used in dpctl. - -* :ref:`Building ` :py:mod:`dpctl` from source -* :ref:`Conventions ` adopted by DPCTLSyclInterface library - -.. toctree:: - :hidden: - - building - memory_ownership_sycl_interface diff --git a/pulls/1961/_sources/contributor_guides/memory_ownership_sycl_interface.rst.txt b/pulls/1961/_sources/contributor_guides/memory_ownership_sycl_interface.rst.txt deleted file mode 100644 index 6e5fe20c84..0000000000 --- a/pulls/1961/_sources/contributor_guides/memory_ownership_sycl_interface.rst.txt +++ /dev/null @@ -1,69 +0,0 @@ -.. _contributor_guides_syclinterface_memory_ownership: - -Working with DPCTLSyclInterface library -======================================= - -The DPCLSyclInterface library is a C-API library which provides select C++ functions -for casting from C opaque pointers to pointers to corresponding C++ classes. - -This document explains the memory ownership model adopted by DPCTLSyclInterface. - -Function declarations are decorated with tokens such as ``__dpctl_keep``, ``__dpctl_take``, -and ``__dpctl_give``. Use of these tokens in declarations serves to self-document memory -ownership semantics. - -Token ``__dpctl_give`` indicates that the function makes a new allocation and delegates -responsibility to free it to the caller. Creation functions, such as -:c:func:`DCPTLDevice_Create`, belong to category of such functions. - -The token ``__dpctl_take`` indicates that the library deletes the allocation associated -with the object to which the token applies. Deletion functions, such as -:c:func:`DPCTLDevice_Delete`, represent set of such functions. - -The token ``__dpctl_keep`` indicates that the library does not alter allocation associated -with the object to which the token applies. Functions to query integral device descriptors, -such as :c:func:`DPCTLDevice_GetMaxComputeUnits`, are examples of such functions. - -.. code-block:: C - :caption: Example: Example of use of DPCTLSyclInterface functions - - // filename: example_syclinterface.c - #include "stdint.h" - #include "stdio.h" - #include "dpctl_sycl_interface.h" - - int main(void) { - // we own memory allocation associated DRef object - DPCTLSyclDeviceRef DRef = DPCTLDevice_Create(); - - // we own memory allocation associated with char array - const char* name = DPCTLDevice_GetName(DRef); - uint32_t cu = DPCTLDevice_GetMaxComputeUnits(DRef); - - // Free allocations associated with DRef - DPCTLDevice_Delete(DRef); - - printf("Device %s has %d compute units\n", name, cu); - - // Free memory allocate for device name - DPCTLCString_Delete(name); - - return 0; - } - -Building the example: - -.. code-block:: bash - :caption: Building the example into an executable - - icx example_syclinterface.c -fsanitize=address \ - $(python -m dpctl --includes) $(python -m dpctl --library) \ - -o example - -Running the example displays the following output without errors: - -.. code-block:: text - :caption: Execution of the executable and its output - - $ ./a.x - Device Intel(R) Graphics [0x9a49] has 96 compute units diff --git a/pulls/1961/_sources/index.rst.txt b/pulls/1961/_sources/index.rst.txt deleted file mode 100644 index f8c4981bdd..0000000000 --- a/pulls/1961/_sources/index.rst.txt +++ /dev/null @@ -1,89 +0,0 @@ -===================== -Data Parallel Control -===================== - -.. _DpctlIntroduction: - -Python package :py:mod:`dpctl` enables Python users to engage multiple -compute devices commonly available in modern consumer- and server-grade -computers using industry-standard :sycl_execution_model:`SYCL execution model <>` -facilitated by :sycl_spec_2020:`SYCL 2020 standard <>`-compliant -Intel(R) oneAPI :dpcpp_compiler:`DPC++ compiler <>`. - -:py:mod:`dpctl` provides a reference data-parallel implementation of -array library :py:mod:`dpctl.tensor` conforming to Python Array API specification. -The implementation adheres to a programming model affording clear control -over the compute device where array computations and memory allocations -take place. - -.. grid:: 2 - :gutter: 3 - - .. grid-item-card:: Beginner Guides - - New to :py:mod:`dpctl`? Check out the Tutorials. - They are a hands-on introduction for beginners. - - +++ - - .. Tutorials contain - - .. button-ref:: beginners_guides - :expand: - :color: secondary - :click-parent: - - To the beginner's guides - - .. grid-item-card:: User Guides - - The user guides are recipes for key tasks and common problems. - - +++ - - .. button-ref:: user_guides - :expand: - :color: secondary - :click-parent: - - To the user guides - - .. grid-item-card:: API Reference - - API Reference contains detailed documentation of functionality provided - in :py:mod:`dpctl` and its components. - - +++ - - .. button-ref:: api_reference - :expand: - :color: secondary - :click-parent: - - Access API Reference - - .. grid-item-card:: Contibutor Guides - - The contributing guidelines will suggest a process of - contributing to :mod:`dpctl`. - - +++ - - .. button-ref:: contributor_guides - :expand: - :color: secondary - :click-parent: - - How can I contribute? - - -.. toctree:: - :maxdepth: 3 - :hidden: - :caption: Contents: - - beginners_guides/index - user_guides/index - api_reference/index - contributor_guides/index - license diff --git a/pulls/1961/_sources/license.rst.txt b/pulls/1961/_sources/license.rst.txt deleted file mode 100644 index 9e9a511765..0000000000 --- a/pulls/1961/_sources/license.rst.txt +++ /dev/null @@ -1,31 +0,0 @@ -.. _user_guide_dpctl_license: - -Licenses -======== - -Data Parallel Control license ------------------------------ - -:py:mod:`dpctl` is licensed under Apache License 2.0 that can be found in -`LICENSE `_ file. -All usage and contributions to the project are subject to the terms and -conditions of this license. - -Third party components and their licenses ------------------------------------------ - -:py:mod:`dpctl` vendors DLPack header file which governed by Apache 2.0 license -that can be found in its `LICENSE `_ vendored file. DLPack header -is used to implement support for data interchanging mechanism in :py:mod:`dpctl.tensor` -as required by Python Array API specification, cf. `data interchange document `_. - -:py:mod:`dpctl` vendors `versioneer `_ to generate it version from git history -of its sources. Versioneer has been placed in public domain per `license file `_ -in its original repository. - - -.. _dpctl_license: https://github.com/IntelPython/dpctl/blob/master/LICENSE -.. _dlpack_license: https://github.com/IntelPython/dpctl/blob/master/dpctl/tensor/include/dlpack/LICENSE.third-party -.. _versioneer_license: https://github.com/python-versioneer/python-versioneer/blob/master/LICENSE -.. _versioneer_gh: https://github.com/python-versioneer/python-versioneer/ -.. _array_api_data_interchange: https://data-apis.org/array-api/latest/design_topics/data_interchange.html diff --git a/pulls/1961/_sources/user_guides/basic_concepts.rst.txt b/pulls/1961/_sources/user_guides/basic_concepts.rst.txt deleted file mode 100644 index 2223bd1c72..0000000000 --- a/pulls/1961/_sources/user_guides/basic_concepts.rst.txt +++ /dev/null @@ -1,244 +0,0 @@ -.. _basic_concepts: - -Heterogeneous Systems and Programming Concepts -============================================== - -This section introduces the basic concepts defined by SYCL standard -for programming heterogeneous system, and used by :py:mod:`dpctl`. - -.. note:: - For SYCL-level details, refer to a more topical SYCL reference, - such as the :sycl_spec_2020:`SYCL 2020 spec <>`. - -Definitions ------------ - -* **Heterogeneous computing** - Refers to computing on multiple devices in a program. - -* **Host** - Every program starts by running on a host, and most of the lines of code in - a program, in particular lines of code implementing the Python interpreter - itself, are usually for the host. Hosts are customarily CPUs. - -* **Device** - A device is a processing unit connected to a host that is programmable - with a specific device driver. Different types of devices can have - different architectures (CPUs, GPUs, FPGA, ASICs, DSP) but are programmable - using the same :oneapi:`oneAPI <>` programming model. - -* **Platform** - Platform is an abstraction to represent a collection of devices addressable - by the same lower-level framework. As multiple - devices of the same type can programmed by the same framework, a platform may - contain multiple devices. The same physical hardware (for example, GPU) - may be programmable by different lower-level frameworks, and hence be enumerated - as part of different platforms. For example, the same GPU hardware can be listed - as an OpenCL* GPU device and a Level-Zero* GPU device. - -* **Context** - Holds the runtime information needed to operate on a device or a - group of devices from the same platform. Contexts are relatively expensive - to create and should be reused as much as possible. - -* **Queue** - A queue is needed to schedule the execution of any computation or data - copying on the device. Queue construction requires specifying a device - and a context targeting that device as well as additional properties, - such as whether profiling information should be collected or submitted - tasks are executed in the order in which they were submitted. - -* **Event** - An event holds information related to computation/data movement operation - scheduled for execution on a queue, such as its execution status as well - as profiling information if the queue the task was submitted to allowed - for collection of such information. Events can be used to specify task - dependencies as well as to synchronize host and devices. - -* **Unified Shared Memory** - Unified Shared Memory (USM) refers to pointer-based device memory management. - USM allocations are bound to context. It means, a pointer representing - USM allocation can be unambiguously mapped to the data it represents *only - if* the associated context is known. USM allocations are accessible by - computational kernels that are executed on a device, provided that the - allocation is bound to the same context that is used to construct the queue - where the kernel is scheduled for execution. - - Depending on the capability of the device, USM allocations can be: - -.. csv-table:: - :header: "Name", "Host accessible", "Device accessibility" - :widths: 25, 25, 50 - - "Device allocation", "No","Refers to an allocation in host memory that is accessible from a device." - "Shared allocation", "Yes", "Accessible by both the host and device." - "Host allocation", "Yes", "Accessible by both the host and device." - -Runtime manages synchronization of the host's and device's view into shared allocations. -The initial placement of the shared allocations is not defined. - -* **Backend** - Refers to the implementation of :oneapi:`oneAPI <>` programming model using a - lower-level heterogeneous programming API. Amongst examples of backends are - "cuda", "hip", "level_zero", "opencl". In particular backend implements a - platform abstraction. - - -Platform --------- - -A platform abstracts one or more SYCL devices that are connected to -a host and can be programmed by the same underlying framework. - -The :class:`dpctl.SyclPlatform` class represents a platform and -abstracts the :sycl_platform:`sycl::platform <>` SYCL runtime class. - -To obtain all platforms available on a system programmatically, use -:func:`dpctl.lsplatform` function. Refer to :ref:`Enumerating available devices ` -for more information. - -It is possible to select devices from specific backend, and hence belonging to -the same platform, by :ref:`using ` -``ONEAPI_DEVICE_SELECTOR`` environment variable, or by using -a :ref:`filter selector string `. - - -Context -------- - -A context is an entity that is associated with the state of device as managed by the -backend. The context is required to map unified address space pointer to the device -where it was allocated unambiguously. - -In order for two DPC++-based Python extensions to share USM allocations, e.g. -as part of :ref:`DLPack exchange `, they each must use -the `same` SYCL context when submitting for execution programs that would access this -allocation. - -Since ``sycl::context`` is dynamically constructed by each extension sharing a USM allocation, -in general, requires sharing the ``sycl::context`` along with the USM pointer, as it is done -in ``__sycl_usm_array_interface__`` :ref:`attribute `. - -Since DLPack itself does not provide for storing of the ``sycl::context``, the proper -working of :func:`dpctl.tensor.from_dlpack` function is only supported for devices of those -platforms that support default platform context SYCL extension `sycl_ext_oneapi_default_platform_context`_, -and only of those allocations that are bound to this default context. - -To query where a particular device ``dev`` belongs to a platform that implements -the default context, check whether ``dev.sycl_platform.default_context`` returns an instance -of :class:`dpctl.SyclContext` or raises an exception. - - -.. _sycl_ext_oneapi_default_platform_context: https://github.com/intel/llvm/blob/sycl/sycl/doc/extensions/supported/sycl_ext_oneapi_default_context.asciidoc - - -.. _user_guide_queues: - -Queue ------ - -SYCL queue is an entity associated with scheduling computational tasks for execution -on a targeted SYCL device and using some specific SYCL context. - -Queue constructor generally requires both to be specified. For platforms that support the -default platform context, a shortcut queue constructor call that specifies only a device would -use the default platform context associated with the platform given device is a part of. - -.. code-block:: python - :caption: Queues constructed from device instance or filter string that selects it have the same context - - >>> import dpctl - >>> d = dpctl.SyclDevice("gpu") - >>> q1 = dpctl.SyclQueue(d) - >>> q2 = dpctl.SyclQueue("gpu") - >>> q1.sycl_context == q2.sycl_context, q1.sycl_device == q2.sycl_device - (True, True) - >>> q1 == q2 - False - -Even through ``q1`` and ``q2`` instances of :class:`dpctl.SyclQueue` target the same device and use the same context -they do not compare equal, since they correspond to two independent scheduling entities. - -.. note:: - :class:`dpctl.tensor.usm_ndarray` objects one associated with ``q1`` and another associated with ``q2`` - could not be combined in a call to the same function that implements - :ref:`compute-follows-data ` programming model in :mod:`dpctl.tensor`. - - -Event ------ - -A SYCL event is an entity created when a task is submitted to SYCL queue for execution. The events are used to -order execution of computational tasks by the DPC++ runtime. They may also contain profiling information associated -with the submitted task, provided the queue was created with "enable_profiling" property. - -SYCL event can be used to synchronize execution of the associated task with execution on host by using -:meth:`dpctl.SyclEvent.wait`. - -Methods :meth:`dpctl.SyclQueue.submit_async` and :meth:`dpctl.SyclQueue.memcpy_async` return -:class:`dpctl.SyclEvent` instances. - -.. note:: - At this point, :mod:`dpctl.tensor` does not provide public API for accessing SYCL events associated with - submission of computation tasks implementing operations on :class:`dpctl.tensor.usm_ndarray` objects. - - -Unified Shared Memory ---------------------- - -Unified Shared Memory allocations of each kind are represented through Python classes -:class:`dpctl.memory.MemoryUSMDevice`, :class:`dpctl.memory.MemoryUSMShared`, and -:class:`dpctl.memory.MemoryUSMHost`. - -These class constructors allow to make USM allocations of requested size in bytes -on the devices targeted by given SYCL queue, and are bound to the context from that -queue. This queue argument is stored the instance of the class and is used to submit -tasks to when performing copying of elements from or to this allocation or when filling -the allocation with values. - -Classes that represent host-accessible USM allocations, i.e., types USM-shared and USM-host, -expose Python buffer interface. - -.. code-block:: python - - >>> import dpctl.memory as dpm - >>> import numpy as np - - >>> # allocate USM-shared memory for 6 32-bit integers - >>> mem_d = dpm.MemoryUSMDevice(26) - >>> mem_d.copy_from_host(b"abcdefghijklmnopqrstuvwxyz") - - >>> mem_s = dpm.MemoryUSMShared(30) - >>> mem_s.memset(value=ord(b"-"")) - >>> mem_s.copy_from_device(mem_d) - - >>> # since USM-shared is host-accessible, - >>> # it implements Python buffer protocol that allows - >>> # for Python objects to read this USM allocation - >>> bytes(mem_s) - b'abcdefghijklmnopqrstuvwxyz--' - - -Backend -------- - -Intel(R) oneAPI Data Parallel C++ compiler ships with two backends: - -#. OpenCL* backend -#. Level-Zero backend - -Additional backends can be added to the compiler by installing CodePlay's plugins: - -#. CUDA backend: provided by `oneAPI for NVIDIA(R) GPUs `_ from `CodePlay`_ -#. HIP backend: provided by `oneAPI for AMD GPUs `_ from `CodePlay`_ - -.. _codeplay_nv_plugin: https://developer.codeplay.com/products/oneapi/nvidia/ -.. _codeplay_amd_plugin: https://developer.codeplay.com/products/oneapi/amd/ -.. _CodePlay: https://codeplay.com/ - -When building open source `Intel LLVM `_ compiler from source the project can be -configured to enable different backends (see `Get Started Guide `_ for -further details). - -.. _GetStartedGuide: https://github.com/intel/llvm/blob/sycl/sycl/doc/GetStartedGuide.md -.. _InteLlVmGh: https://github.com/intel/llvm diff --git a/pulls/1961/_sources/user_guides/dlpack.rst.txt b/pulls/1961/_sources/user_guides/dlpack.rst.txt deleted file mode 100644 index 9f7bc7bd27..0000000000 --- a/pulls/1961/_sources/user_guides/dlpack.rst.txt +++ /dev/null @@ -1,140 +0,0 @@ -.. _dpctl_tensor_dlpack_support: - -DLPack exchange of USM allocated arrays -======================================= - -DLPack overview ---------------- - -`DLPack `_ is a commonly used C-ABI compatible data structure that allows data exchange -between major frameworks. DLPack strives to be minimal, intentionally leaves allocators API and -device API out of scope. - -Data shared via DLPack are owned by the producer who provides a deleter function stored in the -`DLManagedTensor `_, and are only accessed by consumer. -Python semantics of using the structure is `explained in dlpack docs `_. - -DLPack specifies data location in memory via `void * data` field of `DLTensor `_ struct, and via ``DLDevice device`` field. -The `DLDevice `_ struct has two members: an enumeration ``device_type`` and an integer ``device_id``. - -DLPack recognizes enumeration value ``DLDeviceType::kDLOneAPI`` reserved for sharing SYCL USM allocations. -It is not ``kDLSycl`` since importing USM-allocated tensor with this device type relies on oneAPI SYCL extensions -``sycl_ext_oneapi_filter_selector`` and ``sycl_ext_oneapi_default_platform_context`` to operate. - -.. _dlpack_docs: https://dmlc.github.io/dlpack/latest/ -.. _dlpack_managed_tensor: https://dmlc.github.io/dlpack/latest/c_api.html#c.DLManagedTensor -.. _dlpack_dltensor: https://dmlc.github.io/dlpack/latest/c_api.html#c.DLTensor -.. _dlpack_dldevice: https://dmlc.github.io/dlpack/latest/c_api.html#c.DLDevice -.. _dlpack_python_spec: https://dmlc.github.io/dlpack/latest/python_spec.html - -.. The following logic depends on [CMPLRLLVM-35682](https://jira.devtools.intel.com/browse/CMPLRLLVM-35682) to be implemented. - -Exporting USM allocation to DLPack ----------------------------------- - -When sharing USM allocation (of any ``sycl::usm::kind``) with ``void * ptr`` bound to ``sycl::context ctx``: - -.. code-block:: cpp - :caption: Protocol for exporting USM allocation as DLPack - - // Input: void *ptr: - // USM allocation pointer - // sycl::context ctx: - // context the pointer is bound to - - // Get device where allocation was originally made - // Keep in mind, the device may be a sub-device - const sycl::device &ptr_dev = sycl::get_pointer_device(ptr, ctx); - - #if SYCL_EXT_ONEAPI_DEFAULT_CONTEXT - const sycl::context &default_ctx = ptr_dev.get_platform().ext_oneapi_get_default_context(); - #else - static_assert(false, "ext_oneapi_default_context extension is required"); - #endif - - // Assert that ctx is the default platform context, or throw - if (ctx != default_ctx) { - throw pybind11::type_error( - "Can not export USM allocations not " - "bound to default platform context." - ); - } - - // Find parent root device if ptr_dev is a sub-device - const sycl::device &parent_root_device = get_parent_root_device(ptr_dev); - - // find position of parent_root_device in sycl::get_devices - const auto &all_root_devs = sycl::device::get_devices(); - auto beg = std::begin(all_root_devs); - auto end = std::end(all_root_devs); - auto selectot_fn = [parent_root_device](const sycl::device &root_d) -> bool { - return parent_root_device == root_d; - }; - auto pos = find_if(beg, end, selector_fn); - - if (pos == end) { - throw pybind11::type_error("Could not produce DLPack: failed finding device_id"); - } - std::ptrdiff_t dev_idx = std::distance(beg, pos); - - // check that dev_idx can fit into int32_t if needed - int32_t device_id = static_cast(dev_idx); - - // populate DLTensor with DLDeviceType::kDLOneAPI and computed device_id - - -Importing DLPack with ``device_type == kDLOneAPI`` --------------------------------------------------- - -.. code-block:: cpp - :caption: Protocol for recognizing DLPack as a valid USM allocation - - // Input: ptr = dlm_tensor->dl_tensor.data - // device_id = dlm_tensor->dl_tensor.device.device_id - - // Get root_device from device_id - const auto &device_vector = sycl::get_device(); - const sycl::device &root_device = device_vector.at(device_id); - - // Check if the backend of the device is supported by consumer - // Perhaps for certain backends (CUDA, hip, etc.) we should dispatch - // different dlpack importers - - // alternatively - // sycl::device root_device = sycl::device( - // sycl::ext::oneapi::filter_selector{ std::to_string(device_id)} - // ); - - // Get default platform context - #if SYCL_EXT_ONEAPI_DEFAULT_CONTEXT - const sycl::context &default_ctx = root_device.get_platform().ext_oneapi_get_default_context(); - #else - static_assert(false, "ext_oneapi_default_context extension is required"); - #endif - - // Check that pointer is known in the context - const sycl::usm::kind &alloc_type = sycl::get_pointer_type(ptr, ctx); - - if (alloc_type == sycl::usm::kind::unknown) { - throw pybind11::type_error( - "Data pointer in DLPack is not bound to the " - "default platform context of specified device" - ); - } - - // Perform check that USM allocation type is supported by consumer if needed - - // Get sycl::device where the data was allocated - const sycl::device &ptr_dev = sycl::get_pointer_device(ptr, ctx); - - // Create object of consumer's library from ptr, ptr_dev, ctx - -Support of DLPack with ``kDLOneAPI`` device type ------------------------------------------------- - -:py:mod:`dpctl` supports DLPack v0.8. Exchange of USM allocations made using Level-Zero backend -is supported with ``torch.Tensor(device='xpu')`` for PyTorch when using `intel-extension-for-pytorch `_, -as well as for TensorFlow when `intel-extension-for-tensorflow `_ is used. - -.. _intel_ext_for_torch: https://github.com/intel/intel-extension-for-pytorch -.. _intel_ext_for_tf: https://github.com/intel/intel-extension-for-tensorflow diff --git a/pulls/1961/_sources/user_guides/environment_variables.rst.txt b/pulls/1961/_sources/user_guides/environment_variables.rst.txt deleted file mode 100644 index 4ee4dc060e..0000000000 --- a/pulls/1961/_sources/user_guides/environment_variables.rst.txt +++ /dev/null @@ -1,52 +0,0 @@ -.. _user_guides_env_variables: - -##################### -Environment variables -##################### - -Behavior of :py:mod:`dpctl` is affected by :dpcpp_envar:`environment variables <>` that -affect DPC++ compiler runtime. - -Variable ``ONEAPI_DEVICE_SELECTOR`` ------------------------------------ - -The variable ``ONEAPI_DEVICE_SELECTOR`` can be used to limit the choice of devices -available to :py:mod:`dpctl`. Please refer to -:ref:`Managing Devices ` for detailed -description and :ref:`uses `. - -Variable ``SYCL_CACHE_PERSISTENT`` ----------------------------------- - -The binaries implementing :py:mod:`dpctl.tensor` created using the DPC++ compiler contain sections -with standardized intermediate forms (e.g., `SPIR-V `_) that must be -further built using SYCL device drivers for execution on the specific target hardware. -This step is known as just-in-time compiling (JIT-ing). - -By default, the result of JIT-ing persists for the duration of SYCL application, i.e., for the -duration of the Python session where :py:mod:`dpctl.tensor` is used. Setting the environment variable -``SYCL_CACHE_PERSISTENT`` to value of ``1`` instructs DPC++ runtime to save the result of JIT-ing to -disk and reuse it in subsequent Python sessions (assuming the variable remains to be set when sessions -are started). - -Setting of the environment variable ``SYCL_CACHE_PERSISTENT`` improves times of function invocations, -but requires sufficient disk space. The size of the disk footprint can be controlled using -``SYCL_CACHE_MAX_SIZE``. - -Variable ``SYCL_PI_TRACE`` --------------------------- - -Setting this debugging variable enables specific levels of tracing for SYCL Programming Interfaces (PI). -The value of the variable is a bit-mask, with the following supported values: - -.. list-table:: - :header-rows: 1 - - * - Value - - Description - * - ``1`` - - Enables tracing of PI plugins/devices discovery - * - ``2`` - - Enables tracing of PI calls - * - ``-1`` - - Enables all levels of tracing diff --git a/pulls/1961/_sources/user_guides/execution_model.rst.txt b/pulls/1961/_sources/user_guides/execution_model.rst.txt deleted file mode 100644 index 7a1bb6d058..0000000000 --- a/pulls/1961/_sources/user_guides/execution_model.rst.txt +++ /dev/null @@ -1,232 +0,0 @@ -.. _oneapi_programming_model_intro: - -######################## -oneAPI programming model -######################## - -oneAPI library and its Python interface -======================================= - -Using oneAPI libraries, a user calls functions that take ``sycl::queue`` and a collection of -``sycl::event`` objects among other arguments. For example: - -.. code-block:: cpp - :caption: Prototypical call signature of oneMKL function - - sycl::event - compute( - sycl::queue &exec_q, - ..., - const std::vector &dependent_events - ); - -The function ``compute`` inserts computational tasks into the queue ``exec_q`` for DPC++ runtime to -execute on the device the queue targets. The execution may begin only after other tasks whose -execution status is represented by ``sycl::event`` objects in the provided ``dependent_events`` -vector complete. If the vector is empty, the runtime begins the execution as soon as the device is -ready. The function returns a ``sycl::event`` object representing completion of the set of -computational tasks submitted by the ``compute`` function. - -Hence, in the oneAPI programming model, the execution **queue** is used to specify which device the -function will execute on. To create a queue, one must specify a device to target. - -In :mod:`dpctl`, the ``sycl::queue`` is represented by :class:`dpctl.SyclQueue` Python type, -and a Python API to call such a function might look like - -.. code-block:: python - - def call_compute( - exec_q : dpctl.SyclQueue, - ..., - dependent_events : List[dpctl.SyclEvent] = [] - ) -> dpctl.SyclEvent: - ... - -When building Python API for a SYCL offloading function, and you choose to -map the SYCL API to a different API on the Python side, it must still translate to a -similar call under the hood. - -The arguments to the function must be suitable for use in the offloading functions. -Typically these are Python scalars, or objects representing USM allocations, such as -:class:`dpctl.tensor.usm_ndarray`, :class:`dpctl.memory.MemoryUSMDevice` and friends. - -.. note:: - The USM allocations these objects represent must not get deallocated before - offloaded tasks that access them complete. - - This is something authors of DPC++-based Python extensions must take care of, - and users of such extensions should assume assured. - - -USM allocations in :mod:`dpctl` and compute-follows-data -========================================================= - -To make a USM allocation on a device in SYCL, one needs to specify ``sycl::device`` in the -memory of which the allocation is made, and the ``sycl::context`` to which the allocation -is bound. - -A ``sycl::queue`` object is often used instead. In such cases ``sycl::context`` and ``sycl::device`` associated -with the queue are used to make the allocation. - -.. important:: - :mod:`dpctl` chose to associate a queue object with every USM allocation. - - The associated queue may be queried using ``.sycl_queue`` property of the - Python type representing the USM allocation. - -This design choice allows :mod:`dpctl` to have a preferred queue to use when operating on any single -USM allocation. For example: - -.. code-block:: python - - def unary_func(x : dpctl.tensor.usm_ndarray): - code1 - _ = _func_impl(x.sycl_queue, ...) - code2 - -When combining several objects representing USM-allocations, the -:ref:`programming model ` -adopted in :mod:`dpctl` insists that queues associated with each object be the same, in which -case it is the execution queue used. Alternatively :exc:`dpctl.utils.ExecutionPlacementError` is raised. - -.. code-block:: python - - def binary_func( - x1 : dpctl.tensor.usm_ndarray, - x2 : dpctl.tensor.usm_ndarray - ): - exec_q = dpctl.utils.get_execution_queue((x1.sycl_queue, x2.sycl_queue)) - if exec_q is None: - raise dpctl.utils.ExecutionPlacementError - ... - -In order to ensure that compute-follows-data works seamlessly out-of-the-box, :mod:`dpctl` maintains -a cache of with context and device as keys and queues as values used by :class:`dpctl.tensor.Device` class. - -.. code-block:: python - - >>> import dpctl - >>> from dpctl import tensor - - >>> sycl_dev = dpctl.SyclDevice("cpu") - >>> d1 = tensor.Device.create_device(sycl_dev) - >>> d2 = tensor.Device.create_device("cpu") - >>> d3 = tensor.Device.create_device(dpctl.select_cpu_device()) - - >>> d1.sycl_queue == d2.sycl_queue, d1.sycl_queue == d3.sycl_queue, d2.sycl_queue == d3.sycl_queue - (True, True, True) - -Since :class:`dpctl.tensor.Device` class is used by all :ref:`array creation functions ` -in :mod:`dpctl.tensor`, the same value used as ``device`` keyword argument results in array instances that -can be combined together in accordance with compute-follows-data programming model. - -.. code-block:: python - - >>> from dpctl import tensor - >>> import dpctl - - >>> # queue for default-constructed device is used - >>> x1 = tensor.arange(100, dtype="int32") - >>> x2 = tensor.zeros(100, dtype="int32") - >>> x12 = tensor.concat((x1, x2)) - >>> x12.sycl_queue == x1.sycl_queue, x12.sycl_queue == x2.sycl_queue - (True, True) - >>> # default constructors of SyclQueue class create different instance of the queue - >>> q1 = dpctl.SyclQueue() - >>> q2 = dpctl.SyclQueue() - >>> q1 == q2 - False - >>> y1 = tensor.arange(100, dtype="int32", sycl_queue=q1) - >>> y2 = tensor.zeros(100, dtype="int32", sycl_queue=q2) - >>> # this call raises ExecutionPlacementError since compute-follows-data - >>> # rules are not met - >>> tensor.concat((y1, y2)) - -Please refer to the :ref:`array migration ` section of the introduction to -:mod:`dpctl.tensor` to examples on how to resolve ``ExecutionPlacementError`` exceptions. - -.. - Introduction - ============ - - :mod:`dpctl` leverages `Intel(R) oneAPI DPC++ compiler `_ runtime to - answer the following three questions users of heterogenous platforms ask: - - #. What are available compute devices? - #. How to specify the device a computation is to be offloaded to? - #. How to manage sharing of data between devices and Python? - - :mod:`dpctl` implements Python classes and free functions mapping to DPC++ - entities to answer these questions. - - .. _dpcpp_compiler: https://www.intel.com/content/www/us/en/developer/tools/oneapi/data-parallel-c-plus-plus.html - - - Available compute devices - ========================= - - Please refer to :ref:`managing devices ` for details and examples of - enumeration of available devices, as well as of selection of a particular device. - - Once a :class:`dpctl.SyclDevice` instance representing an underlying ``sycl::device`` is created, - a :class:`dpctl.SyclQueue` - - The default behavior for creation functions in :mod:`dpctl.tensor` and constructors of USM allocation classes - from :mod:`dpctl.memory` is to target the default-selected device (consistent with the behavior of SYCL-based - C++ applications). - - .. code-block:: python - - >>> import dpctl - >>> from dpctl import tensor - >>> x = tensor.ones(777) - >>> x.sycl_device == dpctl.select_default_device() - True - >>> from dpctl import memory - >>> mem = memory.MemoryUSMDevice(80) - >>> mem.sycl_device == dpctl.select_default_device() - True - - For Python scripts that target only one device, it makes sense to always use the default-selected device, but - :ref:`control ` which device is being selected by DPC++ runtime - as the default via ``ONEAPI_DEVICE_SELECTOR`` environment variable. - - Exacting device where computation occurs - ======================================== - - Sharing data between devices and Python - ======================================= - -.. - The Data Parallel Control (:py:mod:`dpctl`) package provides a Python runtime to access a - data-parallel computing resource (programmable processing units) from another Python application - or a library, alleviating the need for the other Python packages to develop such a - runtime themselves. The set of programmable processing units includes a diverse range of computing - architectures such as a CPU, GPU, FPGA, and more. They are available to programmers on a - modern heterogeneous system. - - The :py:mod:`dpctl` runtime is built on top of the C++ SYCL standard as implemented in - `Intel(R) oneAPI DPC++ compiler `_ and is designed to be both vendor and - architecture agnostic. - - If the underlying SYCL runtime supports a type of architecture, the :mod:`dpctl` allows - accessing that architecture from Python. - - In its current form, :py:mod:`dpctl` relies on certain DPC++ extensions of the - SYCL standard. Moreover, the binary distribution of :py:mod:`dpctl` uses the proprietary - Intel(R) oneAPI DPC++ runtime bundled as part of oneAPI and is compiled to only target - Intel(R) XPU devices. :py:mod:`dpctl` supports compilation for other SYCL targets, such as - ``nvptx64-nvidia-cuda`` and ``amdgcn-amd-amdhsa`` using `CodePlay plugins `_ - for oneAPI DPC++ compiler providing support for these targets. - - :py:mod:`dpctl` is also compatible with the runtime of the `open-source DPC++ `_ - SYCL bundle that can be compiled to support a wide range of architectures including CUDA, - AMD* ROC, and HIP*. - - The user guide introduces the core features of :py:mod:`dpctl` and the underlying - concepts. The guide is meant primarily for users of the Python package. Library - and native extension developers should refer to the programmer guide. - - .. _codeplay_plugins_url: https://developer.codeplay.com/products/oneapi/ - .. _os_intel_llvm_gh_url: https://github.com/intel/llvm - .. _dpcpp_compiler: https://www.intel.com/content/www/us/en/developer/tools/oneapi/data-parallel-c-plus-plus.html diff --git a/pulls/1961/_sources/user_guides/index.rst.txt b/pulls/1961/_sources/user_guides/index.rst.txt deleted file mode 100644 index 778213f444..0000000000 --- a/pulls/1961/_sources/user_guides/index.rst.txt +++ /dev/null @@ -1,58 +0,0 @@ -.. _user_guides: - -=========== -User guides -=========== - -* Concepts relevant to :ref:`heterogeneous programming `. - -* oneAPI :ref:`execution model ` in Python - -* :ref:`Protocol ` for exchanging USM allocations using DLPack - -* :ref:`Environment variables ` affecting :mod:`dpctl` - - -.. Further topics: - ## Where dpctl.tensor goes beyond array API - - - support for float16 - - support for out= keyword - - Support for combining basic and advanced indexing - - Additional API functions: - - dpt.place - - dpt.put - - dpt.extract - - Extended dpt.take - - dpt.cbrt - - dpt.rsqrt - - dpt.reciprocal - - dpt.cumulative_logsumexp - - dpt.reduce_hypot - - dpt.allclose - - Mutability tutorial - - 0D arrays, no scalars - - array is mutable, pitfalls and best practices - - ## Using tools to understand performance - - - Getting unitrace - - Using it to check GPU activity - - Using it to collect tracing information - - Using VTune - - Using ITT API to zoom in on specific portion of your program - - ## Building DPC++ based Python extension with dpctl - - - Compatibility with system compiler (Intel LLVM is compatible with GCC runtime/VS runtime) - - Simple example - - List examples from dpctl - - Document each native extension example - -.. toctree:: - :hidden: - - basic_concepts - execution_model - dlpack - environment_variables diff --git a/pulls/1961/_sphinx_design_static/design-tabs.js b/pulls/1961/_sphinx_design_static/design-tabs.js deleted file mode 100644 index b25bd6a4fa..0000000000 --- a/pulls/1961/_sphinx_design_static/design-tabs.js +++ /dev/null @@ -1,101 +0,0 @@ -// @ts-check - -// Extra JS capability for selected tabs to be synced -// The selection is stored in local storage so that it persists across page loads. - -/** - * @type {Record} - */ -let sd_id_to_elements = {}; -const storageKeyPrefix = "sphinx-design-tab-id-"; - -/** - * Create a key for a tab element. - * @param {HTMLElement} el - The tab element. - * @returns {[string, string, string] | null} - The key. - * - */ -function create_key(el) { - let syncId = el.getAttribute("data-sync-id"); - let syncGroup = el.getAttribute("data-sync-group"); - if (!syncId || !syncGroup) return null; - return [syncGroup, syncId, syncGroup + "--" + syncId]; -} - -/** - * Initialize the tab selection. - * - */ -function ready() { - // Find all tabs with sync data - - /** @type {string[]} */ - let groups = []; - - document.querySelectorAll(".sd-tab-label").forEach((label) => { - if (label instanceof HTMLElement) { - let data = create_key(label); - if (data) { - let [group, id, key] = data; - - // add click event listener - // @ts-ignore - label.onclick = onSDLabelClick; - - // store map of key to elements - if (!sd_id_to_elements[key]) { - sd_id_to_elements[key] = []; - } - sd_id_to_elements[key].push(label); - - if (groups.indexOf(group) === -1) { - groups.push(group); - // Check if a specific tab has been selected via URL parameter - const tabParam = new URLSearchParams(window.location.search).get( - group - ); - if (tabParam) { - console.log( - "sphinx-design: Selecting tab id for group '" + - group + - "' from URL parameter: " + - tabParam - ); - window.sessionStorage.setItem(storageKeyPrefix + group, tabParam); - } - } - - // Check is a specific tab has been selected previously - let previousId = window.sessionStorage.getItem( - storageKeyPrefix + group - ); - if (previousId === id) { - // console.log( - // "sphinx-design: Selecting tab from session storage: " + id - // ); - // @ts-ignore - label.previousElementSibling.checked = true; - } - } - } - }); -} - -/** - * Activate other tabs with the same sync id. - * - * @this {HTMLElement} - The element that was clicked. - */ -function onSDLabelClick() { - let data = create_key(this); - if (!data) return; - let [group, id, key] = data; - for (const label of sd_id_to_elements[key]) { - if (label === this) continue; - // @ts-ignore - label.previousElementSibling.checked = true; - } - window.sessionStorage.setItem(storageKeyPrefix + group, id); -} - -document.addEventListener("DOMContentLoaded", ready, false); diff --git a/pulls/1961/_sphinx_design_static/sphinx-design.min.css b/pulls/1961/_sphinx_design_static/sphinx-design.min.css deleted file mode 100644 index 860c36da0f..0000000000 --- a/pulls/1961/_sphinx_design_static/sphinx-design.min.css +++ /dev/null @@ -1 +0,0 @@ -.sd-bg-primary{background-color:var(--sd-color-primary) !important}.sd-bg-text-primary{color:var(--sd-color-primary-text) !important}button.sd-bg-primary:focus,button.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}a.sd-bg-primary:focus,a.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}.sd-bg-secondary{background-color:var(--sd-color-secondary) !important}.sd-bg-text-secondary{color:var(--sd-color-secondary-text) !important}button.sd-bg-secondary:focus,button.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}a.sd-bg-secondary:focus,a.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}.sd-bg-success{background-color:var(--sd-color-success) !important}.sd-bg-text-success{color:var(--sd-color-success-text) !important}button.sd-bg-success:focus,button.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}a.sd-bg-success:focus,a.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}.sd-bg-info{background-color:var(--sd-color-info) !important}.sd-bg-text-info{color:var(--sd-color-info-text) !important}button.sd-bg-info:focus,button.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}a.sd-bg-info:focus,a.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}.sd-bg-warning{background-color:var(--sd-color-warning) !important}.sd-bg-text-warning{color:var(--sd-color-warning-text) !important}button.sd-bg-warning:focus,button.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}a.sd-bg-warning:focus,a.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}.sd-bg-danger{background-color:var(--sd-color-danger) !important}.sd-bg-text-danger{color:var(--sd-color-danger-text) !important}button.sd-bg-danger:focus,button.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}a.sd-bg-danger:focus,a.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}.sd-bg-light{background-color:var(--sd-color-light) !important}.sd-bg-text-light{color:var(--sd-color-light-text) !important}button.sd-bg-light:focus,button.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}a.sd-bg-light:focus,a.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}.sd-bg-muted{background-color:var(--sd-color-muted) !important}.sd-bg-text-muted{color:var(--sd-color-muted-text) !important}button.sd-bg-muted:focus,button.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}a.sd-bg-muted:focus,a.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}.sd-bg-dark{background-color:var(--sd-color-dark) !important}.sd-bg-text-dark{color:var(--sd-color-dark-text) !important}button.sd-bg-dark:focus,button.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}a.sd-bg-dark:focus,a.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}.sd-bg-black{background-color:var(--sd-color-black) !important}.sd-bg-text-black{color:var(--sd-color-black-text) !important}button.sd-bg-black:focus,button.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}a.sd-bg-black:focus,a.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}.sd-bg-white{background-color:var(--sd-color-white) !important}.sd-bg-text-white{color:var(--sd-color-white-text) !important}button.sd-bg-white:focus,button.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}a.sd-bg-white:focus,a.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}.sd-text-primary,.sd-text-primary>p{color:var(--sd-color-primary) !important}a.sd-text-primary:focus,a.sd-text-primary:hover{color:var(--sd-color-primary-highlight) !important}.sd-text-secondary,.sd-text-secondary>p{color:var(--sd-color-secondary) !important}a.sd-text-secondary:focus,a.sd-text-secondary:hover{color:var(--sd-color-secondary-highlight) !important}.sd-text-success,.sd-text-success>p{color:var(--sd-color-success) !important}a.sd-text-success:focus,a.sd-text-success:hover{color:var(--sd-color-success-highlight) !important}.sd-text-info,.sd-text-info>p{color:var(--sd-color-info) !important}a.sd-text-info:focus,a.sd-text-info:hover{color:var(--sd-color-info-highlight) !important}.sd-text-warning,.sd-text-warning>p{color:var(--sd-color-warning) !important}a.sd-text-warning:focus,a.sd-text-warning:hover{color:var(--sd-color-warning-highlight) !important}.sd-text-danger,.sd-text-danger>p{color:var(--sd-color-danger) !important}a.sd-text-danger:focus,a.sd-text-danger:hover{color:var(--sd-color-danger-highlight) !important}.sd-text-light,.sd-text-light>p{color:var(--sd-color-light) !important}a.sd-text-light:focus,a.sd-text-light:hover{color:var(--sd-color-light-highlight) !important}.sd-text-muted,.sd-text-muted>p{color:var(--sd-color-muted) !important}a.sd-text-muted:focus,a.sd-text-muted:hover{color:var(--sd-color-muted-highlight) !important}.sd-text-dark,.sd-text-dark>p{color:var(--sd-color-dark) !important}a.sd-text-dark:focus,a.sd-text-dark:hover{color:var(--sd-color-dark-highlight) !important}.sd-text-black,.sd-text-black>p{color:var(--sd-color-black) !important}a.sd-text-black:focus,a.sd-text-black:hover{color:var(--sd-color-black-highlight) !important}.sd-text-white,.sd-text-white>p{color:var(--sd-color-white) !important}a.sd-text-white:focus,a.sd-text-white:hover{color:var(--sd-color-white-highlight) !important}.sd-outline-primary{border-color:var(--sd-color-primary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-primary:focus,a.sd-outline-primary:hover{border-color:var(--sd-color-primary-highlight) !important}.sd-outline-secondary{border-color:var(--sd-color-secondary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-secondary:focus,a.sd-outline-secondary:hover{border-color:var(--sd-color-secondary-highlight) !important}.sd-outline-success{border-color:var(--sd-color-success) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-success:focus,a.sd-outline-success:hover{border-color:var(--sd-color-success-highlight) !important}.sd-outline-info{border-color:var(--sd-color-info) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-info:focus,a.sd-outline-info:hover{border-color:var(--sd-color-info-highlight) !important}.sd-outline-warning{border-color:var(--sd-color-warning) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-warning:focus,a.sd-outline-warning:hover{border-color:var(--sd-color-warning-highlight) !important}.sd-outline-danger{border-color:var(--sd-color-danger) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-danger:focus,a.sd-outline-danger:hover{border-color:var(--sd-color-danger-highlight) !important}.sd-outline-light{border-color:var(--sd-color-light) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-light:focus,a.sd-outline-light:hover{border-color:var(--sd-color-light-highlight) !important}.sd-outline-muted{border-color:var(--sd-color-muted) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-muted:focus,a.sd-outline-muted:hover{border-color:var(--sd-color-muted-highlight) !important}.sd-outline-dark{border-color:var(--sd-color-dark) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-dark:focus,a.sd-outline-dark:hover{border-color:var(--sd-color-dark-highlight) !important}.sd-outline-black{border-color:var(--sd-color-black) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-black:focus,a.sd-outline-black:hover{border-color:var(--sd-color-black-highlight) !important}.sd-outline-white{border-color:var(--sd-color-white) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-white:focus,a.sd-outline-white:hover{border-color:var(--sd-color-white-highlight) !important}.sd-bg-transparent{background-color:transparent !important}.sd-outline-transparent{border-color:transparent !important}.sd-text-transparent{color:transparent !important}.sd-p-0{padding:0 !important}.sd-pt-0,.sd-py-0{padding-top:0 !important}.sd-pr-0,.sd-px-0{padding-right:0 !important}.sd-pb-0,.sd-py-0{padding-bottom:0 !important}.sd-pl-0,.sd-px-0{padding-left:0 !important}.sd-p-1{padding:.25rem !important}.sd-pt-1,.sd-py-1{padding-top:.25rem !important}.sd-pr-1,.sd-px-1{padding-right:.25rem !important}.sd-pb-1,.sd-py-1{padding-bottom:.25rem !important}.sd-pl-1,.sd-px-1{padding-left:.25rem !important}.sd-p-2{padding:.5rem !important}.sd-pt-2,.sd-py-2{padding-top:.5rem !important}.sd-pr-2,.sd-px-2{padding-right:.5rem !important}.sd-pb-2,.sd-py-2{padding-bottom:.5rem !important}.sd-pl-2,.sd-px-2{padding-left:.5rem !important}.sd-p-3{padding:1rem !important}.sd-pt-3,.sd-py-3{padding-top:1rem !important}.sd-pr-3,.sd-px-3{padding-right:1rem !important}.sd-pb-3,.sd-py-3{padding-bottom:1rem !important}.sd-pl-3,.sd-px-3{padding-left:1rem !important}.sd-p-4{padding:1.5rem !important}.sd-pt-4,.sd-py-4{padding-top:1.5rem !important}.sd-pr-4,.sd-px-4{padding-right:1.5rem !important}.sd-pb-4,.sd-py-4{padding-bottom:1.5rem !important}.sd-pl-4,.sd-px-4{padding-left:1.5rem !important}.sd-p-5{padding:3rem !important}.sd-pt-5,.sd-py-5{padding-top:3rem !important}.sd-pr-5,.sd-px-5{padding-right:3rem !important}.sd-pb-5,.sd-py-5{padding-bottom:3rem !important}.sd-pl-5,.sd-px-5{padding-left:3rem !important}.sd-m-auto{margin:auto !important}.sd-mt-auto,.sd-my-auto{margin-top:auto !important}.sd-mr-auto,.sd-mx-auto{margin-right:auto !important}.sd-mb-auto,.sd-my-auto{margin-bottom:auto !important}.sd-ml-auto,.sd-mx-auto{margin-left:auto !important}.sd-m-0{margin:0 !important}.sd-mt-0,.sd-my-0{margin-top:0 !important}.sd-mr-0,.sd-mx-0{margin-right:0 !important}.sd-mb-0,.sd-my-0{margin-bottom:0 !important}.sd-ml-0,.sd-mx-0{margin-left:0 !important}.sd-m-1{margin:.25rem !important}.sd-mt-1,.sd-my-1{margin-top:.25rem !important}.sd-mr-1,.sd-mx-1{margin-right:.25rem !important}.sd-mb-1,.sd-my-1{margin-bottom:.25rem !important}.sd-ml-1,.sd-mx-1{margin-left:.25rem !important}.sd-m-2{margin:.5rem !important}.sd-mt-2,.sd-my-2{margin-top:.5rem !important}.sd-mr-2,.sd-mx-2{margin-right:.5rem !important}.sd-mb-2,.sd-my-2{margin-bottom:.5rem !important}.sd-ml-2,.sd-mx-2{margin-left:.5rem !important}.sd-m-3{margin:1rem !important}.sd-mt-3,.sd-my-3{margin-top:1rem !important}.sd-mr-3,.sd-mx-3{margin-right:1rem !important}.sd-mb-3,.sd-my-3{margin-bottom:1rem !important}.sd-ml-3,.sd-mx-3{margin-left:1rem !important}.sd-m-4{margin:1.5rem !important}.sd-mt-4,.sd-my-4{margin-top:1.5rem !important}.sd-mr-4,.sd-mx-4{margin-right:1.5rem !important}.sd-mb-4,.sd-my-4{margin-bottom:1.5rem !important}.sd-ml-4,.sd-mx-4{margin-left:1.5rem !important}.sd-m-5{margin:3rem !important}.sd-mt-5,.sd-my-5{margin-top:3rem !important}.sd-mr-5,.sd-mx-5{margin-right:3rem !important}.sd-mb-5,.sd-my-5{margin-bottom:3rem !important}.sd-ml-5,.sd-mx-5{margin-left:3rem !important}.sd-w-25{width:25% !important}.sd-w-50{width:50% !important}.sd-w-75{width:75% !important}.sd-w-100{width:100% !important}.sd-w-auto{width:auto !important}.sd-h-25{height:25% !important}.sd-h-50{height:50% !important}.sd-h-75{height:75% !important}.sd-h-100{height:100% !important}.sd-h-auto{height:auto !important}.sd-d-none{display:none !important}.sd-d-inline{display:inline !important}.sd-d-inline-block{display:inline-block !important}.sd-d-block{display:block !important}.sd-d-grid{display:grid !important}.sd-d-flex-row{display:-ms-flexbox !important;display:flex !important;flex-direction:row !important}.sd-d-flex-column{display:-ms-flexbox !important;display:flex !important;flex-direction:column !important}.sd-d-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}@media(min-width: 576px){.sd-d-sm-none{display:none !important}.sd-d-sm-inline{display:inline !important}.sd-d-sm-inline-block{display:inline-block !important}.sd-d-sm-block{display:block !important}.sd-d-sm-grid{display:grid !important}.sd-d-sm-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-sm-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 768px){.sd-d-md-none{display:none !important}.sd-d-md-inline{display:inline !important}.sd-d-md-inline-block{display:inline-block !important}.sd-d-md-block{display:block !important}.sd-d-md-grid{display:grid !important}.sd-d-md-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-md-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 992px){.sd-d-lg-none{display:none !important}.sd-d-lg-inline{display:inline !important}.sd-d-lg-inline-block{display:inline-block !important}.sd-d-lg-block{display:block !important}.sd-d-lg-grid{display:grid !important}.sd-d-lg-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-lg-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 1200px){.sd-d-xl-none{display:none !important}.sd-d-xl-inline{display:inline !important}.sd-d-xl-inline-block{display:inline-block !important}.sd-d-xl-block{display:block !important}.sd-d-xl-grid{display:grid !important}.sd-d-xl-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-xl-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}.sd-align-major-start{justify-content:flex-start !important}.sd-align-major-end{justify-content:flex-end !important}.sd-align-major-center{justify-content:center !important}.sd-align-major-justify{justify-content:space-between !important}.sd-align-major-spaced{justify-content:space-evenly !important}.sd-align-minor-start{align-items:flex-start !important}.sd-align-minor-end{align-items:flex-end !important}.sd-align-minor-center{align-items:center !important}.sd-align-minor-stretch{align-items:stretch !important}.sd-text-justify{text-align:justify !important}.sd-text-left{text-align:left !important}.sd-text-right{text-align:right !important}.sd-text-center{text-align:center !important}.sd-font-weight-light{font-weight:300 !important}.sd-font-weight-lighter{font-weight:lighter !important}.sd-font-weight-normal{font-weight:400 !important}.sd-font-weight-bold{font-weight:700 !important}.sd-font-weight-bolder{font-weight:bolder !important}.sd-font-italic{font-style:italic !important}.sd-text-decoration-none{text-decoration:none !important}.sd-text-lowercase{text-transform:lowercase !important}.sd-text-uppercase{text-transform:uppercase !important}.sd-text-capitalize{text-transform:capitalize !important}.sd-text-wrap{white-space:normal !important}.sd-text-nowrap{white-space:nowrap !important}.sd-text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sd-fs-1,.sd-fs-1>p{font-size:calc(1.375rem + 1.5vw) !important;line-height:unset !important}.sd-fs-2,.sd-fs-2>p{font-size:calc(1.325rem + 0.9vw) !important;line-height:unset !important}.sd-fs-3,.sd-fs-3>p{font-size:calc(1.3rem + 0.6vw) !important;line-height:unset !important}.sd-fs-4,.sd-fs-4>p{font-size:calc(1.275rem + 0.3vw) !important;line-height:unset !important}.sd-fs-5,.sd-fs-5>p{font-size:1.25rem !important;line-height:unset !important}.sd-fs-6,.sd-fs-6>p{font-size:1rem !important;line-height:unset !important}.sd-border-0{border:0 solid !important}.sd-border-top-0{border-top:0 solid !important}.sd-border-bottom-0{border-bottom:0 solid !important}.sd-border-right-0{border-right:0 solid !important}.sd-border-left-0{border-left:0 solid !important}.sd-border-1{border:1px solid !important}.sd-border-top-1{border-top:1px solid !important}.sd-border-bottom-1{border-bottom:1px solid !important}.sd-border-right-1{border-right:1px solid !important}.sd-border-left-1{border-left:1px solid !important}.sd-border-2{border:2px solid !important}.sd-border-top-2{border-top:2px solid !important}.sd-border-bottom-2{border-bottom:2px solid !important}.sd-border-right-2{border-right:2px solid !important}.sd-border-left-2{border-left:2px solid !important}.sd-border-3{border:3px solid !important}.sd-border-top-3{border-top:3px solid !important}.sd-border-bottom-3{border-bottom:3px solid !important}.sd-border-right-3{border-right:3px solid !important}.sd-border-left-3{border-left:3px solid !important}.sd-border-4{border:4px solid !important}.sd-border-top-4{border-top:4px solid !important}.sd-border-bottom-4{border-bottom:4px solid !important}.sd-border-right-4{border-right:4px solid !important}.sd-border-left-4{border-left:4px solid !important}.sd-border-5{border:5px solid !important}.sd-border-top-5{border-top:5px solid !important}.sd-border-bottom-5{border-bottom:5px solid !important}.sd-border-right-5{border-right:5px solid !important}.sd-border-left-5{border-left:5px solid !important}.sd-rounded-0{border-radius:0 !important}.sd-rounded-1{border-radius:.2rem !important}.sd-rounded-2{border-radius:.3rem !important}.sd-rounded-3{border-radius:.5rem !important}.sd-rounded-pill{border-radius:50rem !important}.sd-rounded-circle{border-radius:50% !important}.shadow-none{box-shadow:none !important}.sd-shadow-sm{box-shadow:0 .125rem .25rem var(--sd-color-shadow) !important}.sd-shadow-md{box-shadow:0 .5rem 1rem var(--sd-color-shadow) !important}.sd-shadow-lg{box-shadow:0 1rem 3rem var(--sd-color-shadow) !important}@keyframes sd-slide-from-left{0%{transform:translateX(-100%)}100%{transform:translateX(0)}}@keyframes sd-slide-from-right{0%{transform:translateX(200%)}100%{transform:translateX(0)}}@keyframes sd-grow100{0%{transform:scale(0);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50{0%{transform:scale(0.5);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50-rot20{0%{transform:scale(0.5) rotateZ(-20deg);opacity:.5}75%{transform:scale(1) rotateZ(5deg);opacity:1}95%{transform:scale(1) rotateZ(-1deg);opacity:1}100%{transform:scale(1) rotateZ(0);opacity:1}}.sd-animate-slide-from-left{animation:1s ease-out 0s 1 normal none running sd-slide-from-left}.sd-animate-slide-from-right{animation:1s ease-out 0s 1 normal none running sd-slide-from-right}.sd-animate-grow100{animation:1s ease-out 0s 1 normal none running sd-grow100}.sd-animate-grow50{animation:1s ease-out 0s 1 normal none running sd-grow50}.sd-animate-grow50-rot20{animation:1s ease-out 0s 1 normal none running sd-grow50-rot20}.sd-badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.sd-badge:empty{display:none}a.sd-badge{text-decoration:none}.sd-btn .sd-badge{position:relative;top:-1px}.sd-btn{background-color:transparent;border:1px solid transparent;border-radius:.25rem;cursor:pointer;display:inline-block;font-weight:400;font-size:1rem;line-height:1.5;padding:.375rem .75rem;text-align:center;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;vertical-align:middle;user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none}.sd-btn:hover{text-decoration:none}@media(prefers-reduced-motion: reduce){.sd-btn{transition:none}}.sd-btn-primary,.sd-btn-outline-primary:hover,.sd-btn-outline-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-primary:hover,.sd-btn-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary-highlight) !important;border-color:var(--sd-color-primary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-primary{color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary,.sd-btn-outline-secondary:hover,.sd-btn-outline-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary:hover,.sd-btn-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary-highlight) !important;border-color:var(--sd-color-secondary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-secondary{color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success,.sd-btn-outline-success:hover,.sd-btn-outline-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success:hover,.sd-btn-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success-highlight) !important;border-color:var(--sd-color-success-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-success{color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info,.sd-btn-outline-info:hover,.sd-btn-outline-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info:hover,.sd-btn-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info-highlight) !important;border-color:var(--sd-color-info-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-info{color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning,.sd-btn-outline-warning:hover,.sd-btn-outline-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning:hover,.sd-btn-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning-highlight) !important;border-color:var(--sd-color-warning-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-warning{color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger,.sd-btn-outline-danger:hover,.sd-btn-outline-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger:hover,.sd-btn-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger-highlight) !important;border-color:var(--sd-color-danger-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-danger{color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light,.sd-btn-outline-light:hover,.sd-btn-outline-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light:hover,.sd-btn-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light-highlight) !important;border-color:var(--sd-color-light-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-light{color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted,.sd-btn-outline-muted:hover,.sd-btn-outline-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted:hover,.sd-btn-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted-highlight) !important;border-color:var(--sd-color-muted-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-muted{color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark,.sd-btn-outline-dark:hover,.sd-btn-outline-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark:hover,.sd-btn-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark-highlight) !important;border-color:var(--sd-color-dark-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-dark{color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black,.sd-btn-outline-black:hover,.sd-btn-outline-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black:hover,.sd-btn-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black-highlight) !important;border-color:var(--sd-color-black-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-black{color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white,.sd-btn-outline-white:hover,.sd-btn-outline-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white:hover,.sd-btn-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white-highlight) !important;border-color:var(--sd-color-white-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-white{color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.sd-hide-link-text{font-size:0}.sd-octicon,.sd-material-icon{display:inline-block;fill:currentColor;vertical-align:middle}.sd-avatar-xs{border-radius:50%;object-fit:cover;object-position:center;width:1rem;height:1rem}.sd-avatar-sm{border-radius:50%;object-fit:cover;object-position:center;width:3rem;height:3rem}.sd-avatar-md{border-radius:50%;object-fit:cover;object-position:center;width:5rem;height:5rem}.sd-avatar-lg{border-radius:50%;object-fit:cover;object-position:center;width:7rem;height:7rem}.sd-avatar-xl{border-radius:50%;object-fit:cover;object-position:center;width:10rem;height:10rem}.sd-avatar-inherit{border-radius:50%;object-fit:cover;object-position:center;width:inherit;height:inherit}.sd-avatar-initial{border-radius:50%;object-fit:cover;object-position:center;width:initial;height:initial}.sd-card{background-clip:border-box;background-color:var(--sd-color-card-background);border:1px solid var(--sd-color-card-border);border-radius:.25rem;color:var(--sd-color-card-text);display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;position:relative;word-wrap:break-word}.sd-card>hr{margin-left:0;margin-right:0}.sd-card-hover:hover{border-color:var(--sd-color-card-border-hover);transform:scale(1.01)}.sd-card-body{-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem 1rem}.sd-card-title{margin-bottom:.5rem}.sd-card-subtitle{margin-top:-0.25rem;margin-bottom:0}.sd-card-text:last-child{margin-bottom:0}.sd-card-link:hover{text-decoration:none}.sd-card-link+.card-link{margin-left:1rem}.sd-card-header{padding:.5rem 1rem;margin-bottom:0;background-color:var(--sd-color-card-header);border-bottom:1px solid var(--sd-color-card-border)}.sd-card-header:first-child{border-radius:calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0}.sd-card-footer{padding:.5rem 1rem;background-color:var(--sd-color-card-footer);border-top:1px solid var(--sd-color-card-border)}.sd-card-footer:last-child{border-radius:0 0 calc(0.25rem - 1px) calc(0.25rem - 1px)}.sd-card-header-tabs{margin-right:-0.5rem;margin-bottom:-0.5rem;margin-left:-0.5rem;border-bottom:0}.sd-card-header-pills{margin-right:-0.5rem;margin-left:-0.5rem}.sd-card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom,.sd-card-img-top{width:100%}.sd-card-img,.sd-card-img-top{border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom{border-bottom-left-radius:calc(0.25rem - 1px);border-bottom-right-radius:calc(0.25rem - 1px)}.sd-cards-carousel{width:100%;display:flex;flex-wrap:nowrap;-ms-flex-direction:row;flex-direction:row;overflow-x:hidden;scroll-snap-type:x mandatory}.sd-cards-carousel.sd-show-scrollbar{overflow-x:auto}.sd-cards-carousel:hover,.sd-cards-carousel:focus{overflow-x:auto}.sd-cards-carousel>.sd-card{flex-shrink:0;scroll-snap-align:start}.sd-cards-carousel>.sd-card:not(:last-child){margin-right:3px}.sd-card-cols-1>.sd-card{width:90%}.sd-card-cols-2>.sd-card{width:45%}.sd-card-cols-3>.sd-card{width:30%}.sd-card-cols-4>.sd-card{width:22.5%}.sd-card-cols-5>.sd-card{width:18%}.sd-card-cols-6>.sd-card{width:15%}.sd-card-cols-7>.sd-card{width:12.8571428571%}.sd-card-cols-8>.sd-card{width:11.25%}.sd-card-cols-9>.sd-card{width:10%}.sd-card-cols-10>.sd-card{width:9%}.sd-card-cols-11>.sd-card{width:8.1818181818%}.sd-card-cols-12>.sd-card{width:7.5%}.sd-container,.sd-container-fluid,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container-xl{margin-left:auto;margin-right:auto;padding-left:var(--sd-gutter-x, 0.75rem);padding-right:var(--sd-gutter-x, 0.75rem);width:100%}@media(min-width: 576px){.sd-container-sm,.sd-container{max-width:540px}}@media(min-width: 768px){.sd-container-md,.sd-container-sm,.sd-container{max-width:720px}}@media(min-width: 992px){.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:960px}}@media(min-width: 1200px){.sd-container-xl,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:1140px}}.sd-row{--sd-gutter-x: 1.5rem;--sd-gutter-y: 0;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:calc(var(--sd-gutter-y) * -1);margin-right:calc(var(--sd-gutter-x) * -0.5);margin-left:calc(var(--sd-gutter-x) * -0.5)}.sd-row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--sd-gutter-x) * 0.5);padding-left:calc(var(--sd-gutter-x) * 0.5);margin-top:var(--sd-gutter-y)}.sd-col{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-auto>*{flex:0 0 auto;width:auto}.sd-row-cols-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}@media(min-width: 576px){.sd-col-sm{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-sm-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-sm-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-sm-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-sm-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-sm-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-sm-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-sm-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-sm-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-sm-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-sm-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-sm-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-sm-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-sm-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 768px){.sd-col-md{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-md-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-md-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-md-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-md-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-md-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-md-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-md-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-md-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-md-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-md-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-md-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-md-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-md-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 992px){.sd-col-lg{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-lg-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-lg-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-lg-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-lg-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-lg-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-lg-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-lg-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-lg-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-lg-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-lg-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-lg-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-lg-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-lg-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 1200px){.sd-col-xl{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-xl-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-xl-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-xl-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-xl-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-xl-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-xl-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-xl-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-xl-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-xl-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-xl-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-xl-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-xl-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-xl-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}.sd-col-auto{flex:0 0 auto;-ms-flex:0 0 auto;width:auto}.sd-col-1{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}.sd-col-2{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-col-3{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-col-4{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-col-5{flex:0 0 auto;-ms-flex:0 0 auto;width:41.6666666667%}.sd-col-6{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-col-7{flex:0 0 auto;-ms-flex:0 0 auto;width:58.3333333333%}.sd-col-8{flex:0 0 auto;-ms-flex:0 0 auto;width:66.6666666667%}.sd-col-9{flex:0 0 auto;-ms-flex:0 0 auto;width:75%}.sd-col-10{flex:0 0 auto;-ms-flex:0 0 auto;width:83.3333333333%}.sd-col-11{flex:0 0 auto;-ms-flex:0 0 auto;width:91.6666666667%}.sd-col-12{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-g-0,.sd-gy-0{--sd-gutter-y: 0}.sd-g-0,.sd-gx-0{--sd-gutter-x: 0}.sd-g-1,.sd-gy-1{--sd-gutter-y: 0.25rem}.sd-g-1,.sd-gx-1{--sd-gutter-x: 0.25rem}.sd-g-2,.sd-gy-2{--sd-gutter-y: 0.5rem}.sd-g-2,.sd-gx-2{--sd-gutter-x: 0.5rem}.sd-g-3,.sd-gy-3{--sd-gutter-y: 1rem}.sd-g-3,.sd-gx-3{--sd-gutter-x: 1rem}.sd-g-4,.sd-gy-4{--sd-gutter-y: 1.5rem}.sd-g-4,.sd-gx-4{--sd-gutter-x: 1.5rem}.sd-g-5,.sd-gy-5{--sd-gutter-y: 3rem}.sd-g-5,.sd-gx-5{--sd-gutter-x: 3rem}@media(min-width: 576px){.sd-col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-sm-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-sm-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-sm-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-sm-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-sm-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-sm-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-sm-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-sm-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-sm-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-sm-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-sm-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-sm-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-sm-0,.sd-gy-sm-0{--sd-gutter-y: 0}.sd-g-sm-0,.sd-gx-sm-0{--sd-gutter-x: 0}.sd-g-sm-1,.sd-gy-sm-1{--sd-gutter-y: 0.25rem}.sd-g-sm-1,.sd-gx-sm-1{--sd-gutter-x: 0.25rem}.sd-g-sm-2,.sd-gy-sm-2{--sd-gutter-y: 0.5rem}.sd-g-sm-2,.sd-gx-sm-2{--sd-gutter-x: 0.5rem}.sd-g-sm-3,.sd-gy-sm-3{--sd-gutter-y: 1rem}.sd-g-sm-3,.sd-gx-sm-3{--sd-gutter-x: 1rem}.sd-g-sm-4,.sd-gy-sm-4{--sd-gutter-y: 1.5rem}.sd-g-sm-4,.sd-gx-sm-4{--sd-gutter-x: 1.5rem}.sd-g-sm-5,.sd-gy-sm-5{--sd-gutter-y: 3rem}.sd-g-sm-5,.sd-gx-sm-5{--sd-gutter-x: 3rem}}@media(min-width: 768px){.sd-col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-md-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-md-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-md-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-md-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-md-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-md-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-md-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-md-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-md-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-md-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-md-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-md-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-md-0,.sd-gy-md-0{--sd-gutter-y: 0}.sd-g-md-0,.sd-gx-md-0{--sd-gutter-x: 0}.sd-g-md-1,.sd-gy-md-1{--sd-gutter-y: 0.25rem}.sd-g-md-1,.sd-gx-md-1{--sd-gutter-x: 0.25rem}.sd-g-md-2,.sd-gy-md-2{--sd-gutter-y: 0.5rem}.sd-g-md-2,.sd-gx-md-2{--sd-gutter-x: 0.5rem}.sd-g-md-3,.sd-gy-md-3{--sd-gutter-y: 1rem}.sd-g-md-3,.sd-gx-md-3{--sd-gutter-x: 1rem}.sd-g-md-4,.sd-gy-md-4{--sd-gutter-y: 1.5rem}.sd-g-md-4,.sd-gx-md-4{--sd-gutter-x: 1.5rem}.sd-g-md-5,.sd-gy-md-5{--sd-gutter-y: 3rem}.sd-g-md-5,.sd-gx-md-5{--sd-gutter-x: 3rem}}@media(min-width: 992px){.sd-col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-lg-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-lg-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-lg-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-lg-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-lg-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-lg-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-lg-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-lg-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-lg-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-lg-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-lg-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-lg-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-lg-0,.sd-gy-lg-0{--sd-gutter-y: 0}.sd-g-lg-0,.sd-gx-lg-0{--sd-gutter-x: 0}.sd-g-lg-1,.sd-gy-lg-1{--sd-gutter-y: 0.25rem}.sd-g-lg-1,.sd-gx-lg-1{--sd-gutter-x: 0.25rem}.sd-g-lg-2,.sd-gy-lg-2{--sd-gutter-y: 0.5rem}.sd-g-lg-2,.sd-gx-lg-2{--sd-gutter-x: 0.5rem}.sd-g-lg-3,.sd-gy-lg-3{--sd-gutter-y: 1rem}.sd-g-lg-3,.sd-gx-lg-3{--sd-gutter-x: 1rem}.sd-g-lg-4,.sd-gy-lg-4{--sd-gutter-y: 1.5rem}.sd-g-lg-4,.sd-gx-lg-4{--sd-gutter-x: 1.5rem}.sd-g-lg-5,.sd-gy-lg-5{--sd-gutter-y: 3rem}.sd-g-lg-5,.sd-gx-lg-5{--sd-gutter-x: 3rem}}@media(min-width: 1200px){.sd-col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-xl-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-xl-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-xl-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-xl-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-xl-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-xl-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-xl-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-xl-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-xl-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-xl-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-xl-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-xl-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-xl-0,.sd-gy-xl-0{--sd-gutter-y: 0}.sd-g-xl-0,.sd-gx-xl-0{--sd-gutter-x: 0}.sd-g-xl-1,.sd-gy-xl-1{--sd-gutter-y: 0.25rem}.sd-g-xl-1,.sd-gx-xl-1{--sd-gutter-x: 0.25rem}.sd-g-xl-2,.sd-gy-xl-2{--sd-gutter-y: 0.5rem}.sd-g-xl-2,.sd-gx-xl-2{--sd-gutter-x: 0.5rem}.sd-g-xl-3,.sd-gy-xl-3{--sd-gutter-y: 1rem}.sd-g-xl-3,.sd-gx-xl-3{--sd-gutter-x: 1rem}.sd-g-xl-4,.sd-gy-xl-4{--sd-gutter-y: 1.5rem}.sd-g-xl-4,.sd-gx-xl-4{--sd-gutter-x: 1.5rem}.sd-g-xl-5,.sd-gy-xl-5{--sd-gutter-y: 3rem}.sd-g-xl-5,.sd-gx-xl-5{--sd-gutter-x: 3rem}}.sd-flex-row-reverse{flex-direction:row-reverse !important}details.sd-dropdown{position:relative;font-size:var(--sd-fontsize-dropdown)}details.sd-dropdown:hover{cursor:pointer}details.sd-dropdown .sd-summary-content{cursor:default}details.sd-dropdown summary.sd-summary-title{padding:.5em .6em .5em 1em;font-size:var(--sd-fontsize-dropdown-title);font-weight:var(--sd-fontweight-dropdown-title);user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;list-style:none;display:inline-flex;justify-content:space-between}details.sd-dropdown summary.sd-summary-title::-webkit-details-marker{display:none}details.sd-dropdown summary.sd-summary-title:focus{outline:none}details.sd-dropdown summary.sd-summary-title .sd-summary-icon{margin-right:.6em;display:inline-flex;align-items:center}details.sd-dropdown summary.sd-summary-title .sd-summary-icon svg{opacity:.8}details.sd-dropdown summary.sd-summary-title .sd-summary-text{flex-grow:1;line-height:1.5;padding-right:.5rem}details.sd-dropdown summary.sd-summary-title .sd-summary-state-marker{pointer-events:none;display:inline-flex;align-items:center}details.sd-dropdown summary.sd-summary-title .sd-summary-state-marker svg{opacity:.6}details.sd-dropdown summary.sd-summary-title:hover .sd-summary-state-marker svg{opacity:1;transform:scale(1.1)}details.sd-dropdown[open] summary .sd-octicon.no-title{visibility:hidden}details.sd-dropdown .sd-summary-chevron-right{transition:.25s}details.sd-dropdown[open]>.sd-summary-title .sd-summary-chevron-right{transform:rotate(90deg)}details.sd-dropdown[open]>.sd-summary-title .sd-summary-chevron-down{transform:rotate(180deg)}details.sd-dropdown:not([open]).sd-card{border:none}details.sd-dropdown:not([open])>.sd-card-header{border:1px solid var(--sd-color-card-border);border-radius:.25rem}details.sd-dropdown.sd-fade-in[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out;animation:sd-fade-in .5s ease-in-out}details.sd-dropdown.sd-fade-in-slide-down[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out}.sd-col>.sd-dropdown{width:100%}.sd-summary-content>.sd-tab-set:first-child{margin-top:0}@keyframes sd-fade-in{0%{opacity:0}100%{opacity:1}}@keyframes sd-slide-down{0%{transform:translate(0, -10px)}100%{transform:translate(0, 0)}}.sd-tab-set{border-radius:.125rem;display:flex;flex-wrap:wrap;margin:1em 0;position:relative}.sd-tab-set>input{opacity:0;position:absolute}.sd-tab-set>input:checked+label{border-color:var(--sd-color-tabs-underline-active);color:var(--sd-color-tabs-label-active)}.sd-tab-set>input:checked+label+.sd-tab-content{display:block}.sd-tab-set>input:not(:checked)+label:hover{color:var(--sd-color-tabs-label-hover);border-color:var(--sd-color-tabs-underline-hover)}.sd-tab-set>input:focus+label{outline-style:auto}.sd-tab-set>input:not(.focus-visible)+label{outline:none;-webkit-tap-highlight-color:transparent}.sd-tab-set>label{border-bottom:.125rem solid transparent;margin-bottom:0;color:var(--sd-color-tabs-label-inactive);border-color:var(--sd-color-tabs-underline-inactive);cursor:pointer;font-size:var(--sd-fontsize-tabs-label);font-weight:700;padding:1em 1.25em .5em;transition:color 250ms;width:auto;z-index:1}html .sd-tab-set>label:hover{color:var(--sd-color-tabs-label-active)}.sd-col>.sd-tab-set{width:100%}.sd-tab-content{box-shadow:0 -0.0625rem var(--sd-color-tabs-overline),0 .0625rem var(--sd-color-tabs-underline);display:none;order:99;padding-bottom:.75rem;padding-top:.75rem;width:100%}.sd-tab-content>:first-child{margin-top:0 !important}.sd-tab-content>:last-child{margin-bottom:0 !important}.sd-tab-content>.sd-tab-set{margin:0}.sd-sphinx-override,.sd-sphinx-override *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sd-sphinx-override p{margin-top:0}:root{--sd-color-primary: #0071bc;--sd-color-secondary: #6c757d;--sd-color-success: #28a745;--sd-color-info: #17a2b8;--sd-color-warning: #f0b37e;--sd-color-danger: #dc3545;--sd-color-light: #f8f9fa;--sd-color-muted: #6c757d;--sd-color-dark: #212529;--sd-color-black: black;--sd-color-white: white;--sd-color-primary-highlight: #0060a0;--sd-color-secondary-highlight: #5c636a;--sd-color-success-highlight: #228e3b;--sd-color-info-highlight: #148a9c;--sd-color-warning-highlight: #cc986b;--sd-color-danger-highlight: #bb2d3b;--sd-color-light-highlight: #d3d4d5;--sd-color-muted-highlight: #5c636a;--sd-color-dark-highlight: #1c1f23;--sd-color-black-highlight: black;--sd-color-white-highlight: #d9d9d9;--sd-color-primary-bg: rgba(0, 113, 188, 0.2);--sd-color-secondary-bg: rgba(108, 117, 125, 0.2);--sd-color-success-bg: rgba(40, 167, 69, 0.2);--sd-color-info-bg: rgba(23, 162, 184, 0.2);--sd-color-warning-bg: rgba(240, 179, 126, 0.2);--sd-color-danger-bg: rgba(220, 53, 69, 0.2);--sd-color-light-bg: rgba(248, 249, 250, 0.2);--sd-color-muted-bg: rgba(108, 117, 125, 0.2);--sd-color-dark-bg: rgba(33, 37, 41, 0.2);--sd-color-black-bg: rgba(0, 0, 0, 0.2);--sd-color-white-bg: rgba(255, 255, 255, 0.2);--sd-color-primary-text: #fff;--sd-color-secondary-text: #fff;--sd-color-success-text: #fff;--sd-color-info-text: #fff;--sd-color-warning-text: #212529;--sd-color-danger-text: #fff;--sd-color-light-text: #212529;--sd-color-muted-text: #fff;--sd-color-dark-text: #fff;--sd-color-black-text: #fff;--sd-color-white-text: #212529;--sd-color-shadow: rgba(0, 0, 0, 0.15);--sd-color-card-border: rgba(0, 0, 0, 0.125);--sd-color-card-border-hover: hsla(231, 99%, 66%, 1);--sd-color-card-background: transparent;--sd-color-card-text: inherit;--sd-color-card-header: transparent;--sd-color-card-footer: transparent;--sd-color-tabs-label-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-hover: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-inactive: hsl(0, 0%, 66%);--sd-color-tabs-underline-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-underline-hover: rgba(178, 206, 245, 0.62);--sd-color-tabs-underline-inactive: transparent;--sd-color-tabs-overline: rgb(222, 222, 222);--sd-color-tabs-underline: rgb(222, 222, 222);--sd-fontsize-tabs-label: 1rem;--sd-fontsize-dropdown: inherit;--sd-fontsize-dropdown-title: 1rem;--sd-fontweight-dropdown-title: 700} diff --git a/pulls/1961/_static/basic.css b/pulls/1961/_static/basic.css deleted file mode 100644 index cfc60b86c7..0000000000 --- a/pulls/1961/_static/basic.css +++ /dev/null @@ -1,921 +0,0 @@ -/* - * basic.css - * ~~~~~~~~~ - * - * Sphinx stylesheet -- basic theme. - * - * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * - */ - -/* -- main layout ----------------------------------------------------------- */ - -div.clearer { - clear: both; -} - -div.section::after { - display: block; - content: ''; - clear: left; -} - -/* -- relbar ---------------------------------------------------------------- */ - -div.related { - width: 100%; - font-size: 90%; -} - -div.related h3 { - display: none; -} - -div.related ul { - margin: 0; - padding: 0 0 0 10px; - list-style: none; -} - -div.related li { - display: inline; -} - -div.related li.right { - float: right; - margin-right: 5px; -} - -/* -- sidebar --------------------------------------------------------------- */ - -div.sphinxsidebarwrapper { - padding: 10px 5px 0 10px; -} - -div.sphinxsidebar { - float: left; - width: 230px; - margin-left: -100%; - font-size: 90%; - word-wrap: break-word; - overflow-wrap : break-word; -} - -div.sphinxsidebar ul { - list-style: none; -} - -div.sphinxsidebar ul ul, -div.sphinxsidebar ul.want-points { - margin-left: 20px; - list-style: square; -} - -div.sphinxsidebar ul ul { - margin-top: 0; - margin-bottom: 0; -} - -div.sphinxsidebar form { - margin-top: 10px; -} - -div.sphinxsidebar input { - border: 1px solid #98dbcc; - font-family: sans-serif; - font-size: 1em; -} - -div.sphinxsidebar #searchbox form.search { - overflow: hidden; -} - -div.sphinxsidebar #searchbox input[type="text"] { - float: left; - width: 80%; - padding: 0.25em; - box-sizing: border-box; -} - -div.sphinxsidebar #searchbox input[type="submit"] { - float: left; - width: 20%; - border-left: none; - padding: 0.25em; - box-sizing: border-box; -} - - -img { - border: 0; - max-width: 100%; -} - -/* -- search page ----------------------------------------------------------- */ - -ul.search { - margin: 10px 0 0 20px; - padding: 0; -} - -ul.search li { - padding: 5px 0 5px 20px; - background-image: url(file.png); - background-repeat: no-repeat; - background-position: 0 7px; -} - -ul.search li a { - font-weight: bold; -} - -ul.search li p.context { - color: #888; - margin: 2px 0 0 30px; - text-align: left; -} - -ul.keywordmatches li.goodmatch a { - font-weight: bold; -} - -/* -- index page ------------------------------------------------------------ */ - -table.contentstable { - width: 90%; - margin-left: auto; - margin-right: auto; -} - -table.contentstable p.biglink { - line-height: 150%; -} - -a.biglink { - font-size: 1.3em; -} - -span.linkdescr { - font-style: italic; - padding-top: 5px; - font-size: 90%; -} - -/* -- general index --------------------------------------------------------- */ - -table.indextable { - width: 100%; -} - -table.indextable td { - text-align: left; - vertical-align: top; -} - -table.indextable ul { - margin-top: 0; - margin-bottom: 0; - list-style-type: none; -} - -table.indextable > tbody > tr > td > ul { - padding-left: 0em; -} - -table.indextable tr.pcap { - height: 10px; -} - -table.indextable tr.cap { - margin-top: 10px; - background-color: #f2f2f2; -} - -img.toggler { - margin-right: 3px; - margin-top: 3px; - cursor: pointer; -} - -div.modindex-jumpbox { - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - margin: 1em 0 1em 0; - padding: 0.4em; -} - -div.genindex-jumpbox { - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - margin: 1em 0 1em 0; - padding: 0.4em; -} - -/* -- domain module index --------------------------------------------------- */ - -table.modindextable td { - padding: 2px; - border-collapse: collapse; -} - -/* -- general body styles --------------------------------------------------- */ - -div.body { - min-width: 360px; - max-width: 800px; -} - -div.body p, div.body dd, div.body li, div.body blockquote { - -moz-hyphens: auto; - -ms-hyphens: auto; - -webkit-hyphens: auto; - hyphens: auto; -} - -a.headerlink { - visibility: hidden; -} - -h1:hover > a.headerlink, -h2:hover > a.headerlink, -h3:hover > a.headerlink, -h4:hover > a.headerlink, -h5:hover > a.headerlink, -h6:hover > a.headerlink, -dt:hover > a.headerlink, -caption:hover > a.headerlink, -p.caption:hover > a.headerlink, -div.code-block-caption:hover > a.headerlink { - visibility: visible; -} - -div.body p.caption { - text-align: inherit; -} - -div.body td { - text-align: left; -} - -.first { - margin-top: 0 !important; -} - -p.rubric { - margin-top: 30px; - font-weight: bold; -} - -img.align-left, figure.align-left, .figure.align-left, object.align-left { - clear: left; - float: left; - margin-right: 1em; -} - -img.align-right, figure.align-right, .figure.align-right, object.align-right { - clear: right; - float: right; - margin-left: 1em; -} - -img.align-center, figure.align-center, .figure.align-center, object.align-center { - display: block; - margin-left: auto; - margin-right: auto; -} - -img.align-default, figure.align-default, .figure.align-default { - display: block; - margin-left: auto; - margin-right: auto; -} - -.align-left { - text-align: left; -} - -.align-center { - text-align: center; -} - -.align-default { - text-align: center; -} - -.align-right { - text-align: right; -} - -/* -- sidebars -------------------------------------------------------------- */ - -div.sidebar, -aside.sidebar { - margin: 0 0 0.5em 1em; - border: 1px solid #ddb; - padding: 7px; - background-color: #ffe; - width: 40%; - float: right; - clear: right; - overflow-x: auto; -} - -p.sidebar-title { - font-weight: bold; -} - -nav.contents, -aside.topic, -div.admonition, div.topic, blockquote { - clear: left; -} - -/* -- topics ---------------------------------------------------------------- */ - -nav.contents, -aside.topic, -div.topic { - border: 1px solid #ccc; - padding: 7px; - margin: 10px 0 10px 0; -} - -p.topic-title { - font-size: 1.1em; - font-weight: bold; - margin-top: 10px; -} - -/* -- admonitions ----------------------------------------------------------- */ - -div.admonition { - margin-top: 10px; - margin-bottom: 10px; - padding: 7px; -} - -div.admonition dt { - font-weight: bold; -} - -p.admonition-title { - margin: 0px 10px 5px 0px; - font-weight: bold; -} - -div.body p.centered { - text-align: center; - margin-top: 25px; -} - -/* -- content of sidebars/topics/admonitions -------------------------------- */ - -div.sidebar > :last-child, -aside.sidebar > :last-child, -nav.contents > :last-child, -aside.topic > :last-child, -div.topic > :last-child, -div.admonition > :last-child { - margin-bottom: 0; -} - -div.sidebar::after, -aside.sidebar::after, -nav.contents::after, -aside.topic::after, -div.topic::after, -div.admonition::after, -blockquote::after { - display: block; - content: ''; - clear: both; -} - -/* -- tables ---------------------------------------------------------------- */ - -table.docutils { - margin-top: 10px; - margin-bottom: 10px; - border: 0; - border-collapse: collapse; -} - -table.align-center { - margin-left: auto; - margin-right: auto; -} - -table.align-default { - margin-left: auto; - margin-right: auto; -} - -table caption span.caption-number { - font-style: italic; -} - -table caption span.caption-text { -} - -table.docutils td, table.docutils th { - padding: 1px 8px 1px 5px; - border-top: 0; - border-left: 0; - border-right: 0; - border-bottom: 1px solid #aaa; -} - -th { - text-align: left; - padding-right: 5px; -} - -table.citation { - border-left: solid 1px gray; - margin-left: 1px; -} - -table.citation td { - border-bottom: none; -} - -th > :first-child, -td > :first-child { - margin-top: 0px; -} - -th > :last-child, -td > :last-child { - margin-bottom: 0px; -} - -/* -- figures --------------------------------------------------------------- */ - -div.figure, figure { - margin: 0.5em; - padding: 0.5em; -} - -div.figure p.caption, figcaption { - padding: 0.3em; -} - -div.figure p.caption span.caption-number, -figcaption span.caption-number { - font-style: italic; -} - -div.figure p.caption span.caption-text, -figcaption span.caption-text { -} - -/* -- field list styles ----------------------------------------------------- */ - -table.field-list td, table.field-list th { - border: 0 !important; -} - -.field-list ul { - margin: 0; - padding-left: 1em; -} - -.field-list p { - margin: 0; -} - -.field-name { - -moz-hyphens: manual; - -ms-hyphens: manual; - -webkit-hyphens: manual; - hyphens: manual; -} - -/* -- hlist styles ---------------------------------------------------------- */ - -table.hlist { - margin: 1em 0; -} - -table.hlist td { - vertical-align: top; -} - -/* -- object description styles --------------------------------------------- */ - -.sig { - font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; -} - -.sig-name, code.descname { - background-color: transparent; - font-weight: bold; -} - -.sig-name { - font-size: 1.1em; -} - -code.descname { - font-size: 1.2em; -} - -.sig-prename, code.descclassname { - background-color: transparent; -} - -.optional { - font-size: 1.3em; -} - -.sig-paren { - font-size: larger; -} - -.sig-param.n { - font-style: italic; -} - -/* C++ specific styling */ - -.sig-inline.c-texpr, -.sig-inline.cpp-texpr { - font-family: unset; -} - -.sig.c .k, .sig.c .kt, -.sig.cpp .k, .sig.cpp .kt { - color: #0033B3; -} - -.sig.c .m, -.sig.cpp .m { - color: #1750EB; -} - -.sig.c .s, .sig.c .sc, -.sig.cpp .s, .sig.cpp .sc { - color: #067D17; -} - - -/* -- other body styles ----------------------------------------------------- */ - -ol.arabic { - list-style: decimal; -} - -ol.loweralpha { - list-style: lower-alpha; -} - -ol.upperalpha { - list-style: upper-alpha; -} - -ol.lowerroman { - list-style: lower-roman; -} - -ol.upperroman { - list-style: upper-roman; -} - -:not(li) > ol > li:first-child > :first-child, -:not(li) > ul > li:first-child > :first-child { - margin-top: 0px; -} - -:not(li) > ol > li:last-child > :last-child, -:not(li) > ul > li:last-child > :last-child { - margin-bottom: 0px; -} - -ol.simple ol p, -ol.simple ul p, -ul.simple ol p, -ul.simple ul p { - margin-top: 0; -} - -ol.simple > li:not(:first-child) > p, -ul.simple > li:not(:first-child) > p { - margin-top: 0; -} - -ol.simple p, -ul.simple p { - margin-bottom: 0; -} - -aside.footnote > span, -div.citation > span { - float: left; -} -aside.footnote > span:last-of-type, -div.citation > span:last-of-type { - padding-right: 0.5em; -} -aside.footnote > p { - margin-left: 2em; -} -div.citation > p { - margin-left: 4em; -} -aside.footnote > p:last-of-type, -div.citation > p:last-of-type { - margin-bottom: 0em; -} -aside.footnote > p:last-of-type:after, -div.citation > p:last-of-type:after { - content: ""; - clear: both; -} - -dl.field-list { - display: grid; - grid-template-columns: fit-content(30%) auto; -} - -dl.field-list > dt { - font-weight: bold; - word-break: break-word; - padding-left: 0.5em; - padding-right: 5px; -} - -dl.field-list > dd { - padding-left: 0.5em; - margin-top: 0em; - margin-left: 0em; - margin-bottom: 0em; -} - -dl { - margin-bottom: 15px; -} - -dd > :first-child { - margin-top: 0px; -} - -dd ul, dd table { - margin-bottom: 10px; -} - -dd { - margin-top: 3px; - margin-bottom: 10px; - margin-left: 30px; -} - -.sig dd { - margin-top: 0px; - margin-bottom: 0px; -} - -.sig dl { - margin-top: 0px; - margin-bottom: 0px; -} - -dl > dd:last-child, -dl > dd:last-child > :last-child { - margin-bottom: 0; -} - -dt:target, span.highlighted { - background-color: #fbe54e; -} - -rect.highlighted { - fill: #fbe54e; -} - -dl.glossary dt { - font-weight: bold; - font-size: 1.1em; -} - -.versionmodified { - font-style: italic; -} - -.system-message { - background-color: #fda; - padding: 5px; - border: 3px solid red; -} - -.footnote:target { - background-color: #ffa; -} - -.line-block { - display: block; - margin-top: 1em; - margin-bottom: 1em; -} - -.line-block .line-block { - margin-top: 0; - margin-bottom: 0; - margin-left: 1.5em; -} - -.guilabel, .menuselection { - font-family: sans-serif; -} - -.accelerator { - text-decoration: underline; -} - -.classifier { - font-style: oblique; -} - -.classifier:before { - font-style: normal; - margin: 0 0.5em; - content: ":"; - display: inline-block; -} - -abbr, acronym { - border-bottom: dotted 1px; - cursor: help; -} - -.translated { - background-color: rgba(207, 255, 207, 0.2) -} - -.untranslated { - background-color: rgba(255, 207, 207, 0.2) -} - -/* -- code displays --------------------------------------------------------- */ - -pre { - overflow: auto; - overflow-y: hidden; /* fixes display issues on Chrome browsers */ -} - -pre, div[class*="highlight-"] { - clear: both; -} - -span.pre { - -moz-hyphens: none; - -ms-hyphens: none; - -webkit-hyphens: none; - hyphens: none; - white-space: nowrap; -} - -div[class*="highlight-"] { - margin: 1em 0; -} - -td.linenos pre { - border: 0; - background-color: transparent; - color: #aaa; -} - -table.highlighttable { - display: block; -} - -table.highlighttable tbody { - display: block; -} - -table.highlighttable tr { - display: flex; -} - -table.highlighttable td { - margin: 0; - padding: 0; -} - -table.highlighttable td.linenos { - padding-right: 0.5em; -} - -table.highlighttable td.code { - flex: 1; - overflow: hidden; -} - -.highlight .hll { - display: block; -} - -div.highlight pre, -table.highlighttable pre { - margin: 0; -} - -div.code-block-caption + div { - margin-top: 0; -} - -div.code-block-caption { - margin-top: 1em; - padding: 2px 5px; - font-size: small; -} - -div.code-block-caption code { - background-color: transparent; -} - -table.highlighttable td.linenos, -span.linenos, -div.highlight span.gp { /* gp: Generic.Prompt */ - user-select: none; - -webkit-user-select: text; /* Safari fallback only */ - -webkit-user-select: none; /* Chrome/Safari */ - -moz-user-select: none; /* Firefox */ - -ms-user-select: none; /* IE10+ */ -} - -div.code-block-caption span.caption-number { - padding: 0.1em 0.3em; - font-style: italic; -} - -div.code-block-caption span.caption-text { -} - -div.literal-block-wrapper { - margin: 1em 0; -} - -code.xref, a code { - background-color: transparent; - font-weight: bold; -} - -h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { - background-color: transparent; -} - -.viewcode-link { - float: right; -} - -.viewcode-back { - float: right; - font-family: sans-serif; -} - -div.viewcode-block:target { - margin: -1px -10px; - padding: 0 10px; -} - -/* -- math display ---------------------------------------------------------- */ - -img.math { - vertical-align: middle; -} - -div.body div.math p { - text-align: center; -} - -span.eqno { - float: right; -} - -span.eqno a.headerlink { - position: absolute; - z-index: 1; -} - -div.math:hover a.headerlink { - visibility: visible; -} - -/* -- printout stylesheet --------------------------------------------------- */ - -@media print { - div.document, - div.documentwrapper, - div.bodywrapper { - margin: 0 !important; - width: 100%; - } - - div.sphinxsidebar, - div.related, - div.footer, - #top-link { - display: none; - } -} \ No newline at end of file diff --git a/pulls/1961/_static/check-solid.svg b/pulls/1961/_static/check-solid.svg deleted file mode 100644 index 92fad4b5c0..0000000000 --- a/pulls/1961/_static/check-solid.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/pulls/1961/_static/clipboard.min.js b/pulls/1961/_static/clipboard.min.js deleted file mode 100644 index 54b3c46381..0000000000 --- a/pulls/1961/_static/clipboard.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * clipboard.js v2.0.8 - * https://clipboardjs.com/ - * - * Licensed MIT Β© Zeno Rocha - */ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return o}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),c=n.n(e);function a(t){try{return document.execCommand(t)}catch(t){return}}var f=function(t){t=c()(t);return a("cut"),t};var l=function(t){var e,n,o,r=1 - - - - diff --git a/pulls/1961/_static/copybutton.css b/pulls/1961/_static/copybutton.css deleted file mode 100644 index f1916ec7d1..0000000000 --- a/pulls/1961/_static/copybutton.css +++ /dev/null @@ -1,94 +0,0 @@ -/* Copy buttons */ -button.copybtn { - position: absolute; - display: flex; - top: .3em; - right: .3em; - width: 1.7em; - height: 1.7em; - opacity: 0; - transition: opacity 0.3s, border .3s, background-color .3s; - user-select: none; - padding: 0; - border: none; - outline: none; - border-radius: 0.4em; - /* The colors that GitHub uses */ - border: #1b1f2426 1px solid; - background-color: #f6f8fa; - color: #57606a; -} - -button.copybtn.success { - border-color: #22863a; - color: #22863a; -} - -button.copybtn svg { - stroke: currentColor; - width: 1.5em; - height: 1.5em; - padding: 0.1em; -} - -div.highlight { - position: relative; -} - -/* Show the copybutton */ -.highlight:hover button.copybtn, button.copybtn.success { - opacity: 1; -} - -.highlight button.copybtn:hover { - background-color: rgb(235, 235, 235); -} - -.highlight button.copybtn:active { - background-color: rgb(187, 187, 187); -} - -/** - * A minimal CSS-only tooltip copied from: - * https://codepen.io/mildrenben/pen/rVBrpK - * - * To use, write HTML like the following: - * - *

Short

- */ - .o-tooltip--left { - position: relative; - } - - .o-tooltip--left:after { - opacity: 0; - visibility: hidden; - position: absolute; - content: attr(data-tooltip); - padding: .2em; - font-size: .8em; - left: -.2em; - background: grey; - color: white; - white-space: nowrap; - z-index: 2; - border-radius: 2px; - transform: translateX(-102%) translateY(0); - transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); -} - -.o-tooltip--left:hover:after { - display: block; - opacity: 1; - visibility: visible; - transform: translateX(-100%) translateY(0); - transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); - transition-delay: .5s; -} - -/* By default the copy button shouldn't show up when printing a page */ -@media print { - button.copybtn { - display: none; - } -} diff --git a/pulls/1961/_static/copybutton.js b/pulls/1961/_static/copybutton.js deleted file mode 100644 index 17e165d8ca..0000000000 --- a/pulls/1961/_static/copybutton.js +++ /dev/null @@ -1,248 +0,0 @@ -// Localization support -const messages = { - 'en': { - 'copy': 'Copy', - 'copy_to_clipboard': 'Copy to clipboard', - 'copy_success': 'Copied!', - 'copy_failure': 'Failed to copy', - }, - 'es' : { - 'copy': 'Copiar', - 'copy_to_clipboard': 'Copiar al portapapeles', - 'copy_success': 'Β‘Copiado!', - 'copy_failure': 'Error al copiar', - }, - 'de' : { - 'copy': 'Kopieren', - 'copy_to_clipboard': 'In die Zwischenablage kopieren', - 'copy_success': 'Kopiert!', - 'copy_failure': 'Fehler beim Kopieren', - }, - 'fr' : { - 'copy': 'Copier', - 'copy_to_clipboard': 'Copier dans le presse-papier', - 'copy_success': 'CopiΓ© !', - 'copy_failure': 'Γ‰chec de la copie', - }, - 'ru': { - 'copy': 'Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ', - 'copy_to_clipboard': 'Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² Π±ΡƒΡ„Π΅Ρ€', - 'copy_success': 'Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΎ!', - 'copy_failure': 'НС ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ', - }, - 'zh-CN': { - 'copy': '倍刢', - 'copy_to_clipboard': '倍刢到ε‰ͺ贴板', - 'copy_success': '倍刢成功!', - 'copy_failure': '倍刢倱θ΄₯', - }, - 'it' : { - 'copy': 'Copiare', - 'copy_to_clipboard': 'Copiato negli appunti', - 'copy_success': 'Copiato!', - 'copy_failure': 'Errore durante la copia', - } -} - -let locale = 'en' -if( document.documentElement.lang !== undefined - && messages[document.documentElement.lang] !== undefined ) { - locale = document.documentElement.lang -} - -let doc_url_root = DOCUMENTATION_OPTIONS.URL_ROOT; -if (doc_url_root == '#') { - doc_url_root = ''; -} - -/** - * SVG files for our copy buttons - */ -let iconCheck = ` - ${messages[locale]['copy_success']} - - -` - -// If the user specified their own SVG use that, otherwise use the default -let iconCopy = ``; -if (!iconCopy) { - iconCopy = ` - ${messages[locale]['copy_to_clipboard']} - - - -` -} - -/** - * Set up copy/paste for code blocks - */ - -const runWhenDOMLoaded = cb => { - if (document.readyState != 'loading') { - cb() - } else if (document.addEventListener) { - document.addEventListener('DOMContentLoaded', cb) - } else { - document.attachEvent('onreadystatechange', function() { - if (document.readyState == 'complete') cb() - }) - } -} - -const codeCellId = index => `codecell${index}` - -// Clears selected text since ClipboardJS will select the text when copying -const clearSelection = () => { - if (window.getSelection) { - window.getSelection().removeAllRanges() - } else if (document.selection) { - document.selection.empty() - } -} - -// Changes tooltip text for a moment, then changes it back -// We want the timeout of our `success` class to be a bit shorter than the -// tooltip and icon change, so that we can hide the icon before changing back. -var timeoutIcon = 2000; -var timeoutSuccessClass = 1500; - -const temporarilyChangeTooltip = (el, oldText, newText) => { - el.setAttribute('data-tooltip', newText) - el.classList.add('success') - // Remove success a little bit sooner than we change the tooltip - // So that we can use CSS to hide the copybutton first - setTimeout(() => el.classList.remove('success'), timeoutSuccessClass) - setTimeout(() => el.setAttribute('data-tooltip', oldText), timeoutIcon) -} - -// Changes the copy button icon for two seconds, then changes it back -const temporarilyChangeIcon = (el) => { - el.innerHTML = iconCheck; - setTimeout(() => {el.innerHTML = iconCopy}, timeoutIcon) -} - -const addCopyButtonToCodeCells = () => { - // If ClipboardJS hasn't loaded, wait a bit and try again. This - // happens because we load ClipboardJS asynchronously. - if (window.ClipboardJS === undefined) { - setTimeout(addCopyButtonToCodeCells, 250) - return - } - - // Add copybuttons to all of our code cells - const COPYBUTTON_SELECTOR = 'div.highlight pre'; - const codeCells = document.querySelectorAll(COPYBUTTON_SELECTOR) - codeCells.forEach((codeCell, index) => { - const id = codeCellId(index) - codeCell.setAttribute('id', id) - - const clipboardButton = id => - `` - codeCell.insertAdjacentHTML('afterend', clipboardButton(id)) - }) - -function escapeRegExp(string) { - return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string -} - -/** - * Removes excluded text from a Node. - * - * @param {Node} target Node to filter. - * @param {string} exclude CSS selector of nodes to exclude. - * @returns {DOMString} Text from `target` with text removed. - */ -function filterText(target, exclude) { - const clone = target.cloneNode(true); // clone as to not modify the live DOM - if (exclude) { - // remove excluded nodes - clone.querySelectorAll(exclude).forEach(node => node.remove()); - } - return clone.innerText; -} - -// Callback when a copy button is clicked. Will be passed the node that was clicked -// should then grab the text and replace pieces of text that shouldn't be used in output -function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { - var regexp; - var match; - - // Do we check for line continuation characters and "HERE-documents"? - var useLineCont = !!lineContinuationChar - var useHereDoc = !!hereDocDelim - - // create regexp to capture prompt and remaining line - if (isRegexp) { - regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') - } else { - regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') - } - - const outputLines = []; - var promptFound = false; - var gotLineCont = false; - var gotHereDoc = false; - const lineGotPrompt = []; - for (const line of textContent.split('\n')) { - match = line.match(regexp) - if (match || gotLineCont || gotHereDoc) { - promptFound = regexp.test(line) - lineGotPrompt.push(promptFound) - if (removePrompts && promptFound) { - outputLines.push(match[2]) - } else { - outputLines.push(line) - } - gotLineCont = line.endsWith(lineContinuationChar) & useLineCont - if (line.includes(hereDocDelim) & useHereDoc) - gotHereDoc = !gotHereDoc - } else if (!onlyCopyPromptLines) { - outputLines.push(line) - } else if (copyEmptyLines && line.trim() === '') { - outputLines.push(line) - } - } - - // If no lines with the prompt were found then just use original lines - if (lineGotPrompt.some(v => v === true)) { - textContent = outputLines.join('\n'); - } - - // Remove a trailing newline to avoid auto-running when pasting - if (textContent.endsWith("\n")) { - textContent = textContent.slice(0, -1) - } - return textContent -} - - -var copyTargetText = (trigger) => { - var target = document.querySelector(trigger.attributes['data-clipboard-target'].value); - - // get filtered text - let exclude = '.linenos'; - - let text = filterText(target, exclude); - return formatCopyText(text, '>>> ', false, true, true, true, '', '') -} - - // Initialize with a callback so we can modify the text before copy - const clipboard = new ClipboardJS('.copybtn', {text: copyTargetText}) - - // Update UI with error/success messages - clipboard.on('success', event => { - clearSelection() - temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_success']) - temporarilyChangeIcon(event.trigger) - }) - - clipboard.on('error', event => { - temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_failure']) - }) -} - -runWhenDOMLoaded(addCopyButtonToCodeCells) \ No newline at end of file diff --git a/pulls/1961/_static/copybutton_funcs.js b/pulls/1961/_static/copybutton_funcs.js deleted file mode 100644 index dbe1aaad79..0000000000 --- a/pulls/1961/_static/copybutton_funcs.js +++ /dev/null @@ -1,73 +0,0 @@ -function escapeRegExp(string) { - return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string -} - -/** - * Removes excluded text from a Node. - * - * @param {Node} target Node to filter. - * @param {string} exclude CSS selector of nodes to exclude. - * @returns {DOMString} Text from `target` with text removed. - */ -export function filterText(target, exclude) { - const clone = target.cloneNode(true); // clone as to not modify the live DOM - if (exclude) { - // remove excluded nodes - clone.querySelectorAll(exclude).forEach(node => node.remove()); - } - return clone.innerText; -} - -// Callback when a copy button is clicked. Will be passed the node that was clicked -// should then grab the text and replace pieces of text that shouldn't be used in output -export function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { - var regexp; - var match; - - // Do we check for line continuation characters and "HERE-documents"? - var useLineCont = !!lineContinuationChar - var useHereDoc = !!hereDocDelim - - // create regexp to capture prompt and remaining line - if (isRegexp) { - regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') - } else { - regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') - } - - const outputLines = []; - var promptFound = false; - var gotLineCont = false; - var gotHereDoc = false; - const lineGotPrompt = []; - for (const line of textContent.split('\n')) { - match = line.match(regexp) - if (match || gotLineCont || gotHereDoc) { - promptFound = regexp.test(line) - lineGotPrompt.push(promptFound) - if (removePrompts && promptFound) { - outputLines.push(match[2]) - } else { - outputLines.push(line) - } - gotLineCont = line.endsWith(lineContinuationChar) & useLineCont - if (line.includes(hereDocDelim) & useHereDoc) - gotHereDoc = !gotHereDoc - } else if (!onlyCopyPromptLines) { - outputLines.push(line) - } else if (copyEmptyLines && line.trim() === '') { - outputLines.push(line) - } - } - - // If no lines with the prompt were found then just use original lines - if (lineGotPrompt.some(v => v === true)) { - textContent = outputLines.join('\n'); - } - - // Remove a trailing newline to avoid auto-running when pasting - if (textContent.endsWith("\n")) { - textContent = textContent.slice(0, -1) - } - return textContent -} diff --git a/pulls/1961/_static/debug.css b/pulls/1961/_static/debug.css deleted file mode 100644 index 74d4aec33e..0000000000 --- a/pulls/1961/_static/debug.css +++ /dev/null @@ -1,69 +0,0 @@ -/* - This CSS file should be overridden by the theme authors. It's - meant for debugging and developing the skeleton that this theme provides. -*/ -body { - font-family: -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, - "Apple Color Emoji", "Segoe UI Emoji"; - background: lavender; -} -.sb-announcement { - background: rgb(131, 131, 131); -} -.sb-announcement__inner { - background: black; - color: white; -} -.sb-header { - background: lightskyblue; -} -.sb-header__inner { - background: royalblue; - color: white; -} -.sb-header-secondary { - background: lightcyan; -} -.sb-header-secondary__inner { - background: cornflowerblue; - color: white; -} -.sb-sidebar-primary { - background: lightgreen; -} -.sb-main { - background: blanchedalmond; -} -.sb-main__inner { - background: antiquewhite; -} -.sb-header-article { - background: lightsteelblue; -} -.sb-article-container { - background: snow; -} -.sb-article-main { - background: white; -} -.sb-footer-article { - background: lightpink; -} -.sb-sidebar-secondary { - background: lightgoldenrodyellow; -} -.sb-footer-content { - background: plum; -} -.sb-footer-content__inner { - background: palevioletred; -} -.sb-footer { - background: pink; -} -.sb-footer__inner { - background: salmon; -} -.sb-article { - background: white; -} diff --git a/pulls/1961/_static/design-tabs.js b/pulls/1961/_static/design-tabs.js deleted file mode 100644 index b25bd6a4fa..0000000000 --- a/pulls/1961/_static/design-tabs.js +++ /dev/null @@ -1,101 +0,0 @@ -// @ts-check - -// Extra JS capability for selected tabs to be synced -// The selection is stored in local storage so that it persists across page loads. - -/** - * @type {Record} - */ -let sd_id_to_elements = {}; -const storageKeyPrefix = "sphinx-design-tab-id-"; - -/** - * Create a key for a tab element. - * @param {HTMLElement} el - The tab element. - * @returns {[string, string, string] | null} - The key. - * - */ -function create_key(el) { - let syncId = el.getAttribute("data-sync-id"); - let syncGroup = el.getAttribute("data-sync-group"); - if (!syncId || !syncGroup) return null; - return [syncGroup, syncId, syncGroup + "--" + syncId]; -} - -/** - * Initialize the tab selection. - * - */ -function ready() { - // Find all tabs with sync data - - /** @type {string[]} */ - let groups = []; - - document.querySelectorAll(".sd-tab-label").forEach((label) => { - if (label instanceof HTMLElement) { - let data = create_key(label); - if (data) { - let [group, id, key] = data; - - // add click event listener - // @ts-ignore - label.onclick = onSDLabelClick; - - // store map of key to elements - if (!sd_id_to_elements[key]) { - sd_id_to_elements[key] = []; - } - sd_id_to_elements[key].push(label); - - if (groups.indexOf(group) === -1) { - groups.push(group); - // Check if a specific tab has been selected via URL parameter - const tabParam = new URLSearchParams(window.location.search).get( - group - ); - if (tabParam) { - console.log( - "sphinx-design: Selecting tab id for group '" + - group + - "' from URL parameter: " + - tabParam - ); - window.sessionStorage.setItem(storageKeyPrefix + group, tabParam); - } - } - - // Check is a specific tab has been selected previously - let previousId = window.sessionStorage.getItem( - storageKeyPrefix + group - ); - if (previousId === id) { - // console.log( - // "sphinx-design: Selecting tab from session storage: " + id - // ); - // @ts-ignore - label.previousElementSibling.checked = true; - } - } - } - }); -} - -/** - * Activate other tabs with the same sync id. - * - * @this {HTMLElement} - The element that was clicked. - */ -function onSDLabelClick() { - let data = create_key(this); - if (!data) return; - let [group, id, key] = data; - for (const label of sd_id_to_elements[key]) { - if (label === this) continue; - // @ts-ignore - label.previousElementSibling.checked = true; - } - window.sessionStorage.setItem(storageKeyPrefix + group, id); -} - -document.addEventListener("DOMContentLoaded", ready, false); diff --git a/pulls/1961/_static/doctools.js b/pulls/1961/_static/doctools.js deleted file mode 100644 index d06a71d751..0000000000 --- a/pulls/1961/_static/doctools.js +++ /dev/null @@ -1,156 +0,0 @@ -/* - * doctools.js - * ~~~~~~~~~~~ - * - * Base JavaScript utilities for all Sphinx HTML documentation. - * - * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * - */ -"use strict"; - -const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ - "TEXTAREA", - "INPUT", - "SELECT", - "BUTTON", -]); - -const _ready = (callback) => { - if (document.readyState !== "loading") { - callback(); - } else { - document.addEventListener("DOMContentLoaded", callback); - } -}; - -/** - * Small JavaScript module for the documentation. - */ -const Documentation = { - init: () => { - Documentation.initDomainIndexTable(); - Documentation.initOnKeyListeners(); - }, - - /** - * i18n support - */ - TRANSLATIONS: {}, - PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), - LOCALE: "unknown", - - // gettext and ngettext don't access this so that the functions - // can safely bound to a different name (_ = Documentation.gettext) - gettext: (string) => { - const translated = Documentation.TRANSLATIONS[string]; - switch (typeof translated) { - case "undefined": - return string; // no translation - case "string": - return translated; // translation exists - default: - return translated[0]; // (singular, plural) translation tuple exists - } - }, - - ngettext: (singular, plural, n) => { - const translated = Documentation.TRANSLATIONS[singular]; - if (typeof translated !== "undefined") - return translated[Documentation.PLURAL_EXPR(n)]; - return n === 1 ? singular : plural; - }, - - addTranslations: (catalog) => { - Object.assign(Documentation.TRANSLATIONS, catalog.messages); - Documentation.PLURAL_EXPR = new Function( - "n", - `return (${catalog.plural_expr})` - ); - Documentation.LOCALE = catalog.locale; - }, - - /** - * helper function to focus on search bar - */ - focusSearchBar: () => { - document.querySelectorAll("input[name=q]")[0]?.focus(); - }, - - /** - * Initialise the domain index toggle buttons - */ - initDomainIndexTable: () => { - const toggler = (el) => { - const idNumber = el.id.substr(7); - const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); - if (el.src.substr(-9) === "minus.png") { - el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; - toggledRows.forEach((el) => (el.style.display = "none")); - } else { - el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; - toggledRows.forEach((el) => (el.style.display = "")); - } - }; - - const togglerElements = document.querySelectorAll("img.toggler"); - togglerElements.forEach((el) => - el.addEventListener("click", (event) => toggler(event.currentTarget)) - ); - togglerElements.forEach((el) => (el.style.display = "")); - if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); - }, - - initOnKeyListeners: () => { - // only install a listener if it is really needed - if ( - !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && - !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS - ) - return; - - document.addEventListener("keydown", (event) => { - // bail for input elements - if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; - // bail with special keys - if (event.altKey || event.ctrlKey || event.metaKey) return; - - if (!event.shiftKey) { - switch (event.key) { - case "ArrowLeft": - if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; - - const prevLink = document.querySelector('link[rel="prev"]'); - if (prevLink && prevLink.href) { - window.location.href = prevLink.href; - event.preventDefault(); - } - break; - case "ArrowRight": - if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; - - const nextLink = document.querySelector('link[rel="next"]'); - if (nextLink && nextLink.href) { - window.location.href = nextLink.href; - event.preventDefault(); - } - break; - } - } - - // some keyboard layouts may need Shift to get / - switch (event.key) { - case "/": - if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; - Documentation.focusSearchBar(); - event.preventDefault(); - } - }); - }, -}; - -// quick alias for translations -const _ = Documentation.gettext; - -_ready(Documentation.init); diff --git a/pulls/1961/_static/documentation_options.js b/pulls/1961/_static/documentation_options.js deleted file mode 100644 index 6334647c38..0000000000 --- a/pulls/1961/_static/documentation_options.js +++ /dev/null @@ -1,14 +0,0 @@ -var DOCUMENTATION_OPTIONS = { - URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), - VERSION: '0.19.0dev0', - LANGUAGE: 'en', - COLLAPSE_INDEX: false, - BUILDER: 'html', - FILE_SUFFIX: '.html', - LINK_SUFFIX: '.html', - HAS_SOURCE: true, - SOURCELINK_SUFFIX: '.txt', - NAVIGATION_WITH_KEYS: false, - SHOW_SEARCH_SUMMARY: true, - ENABLE_SEARCH_SHORTCUTS: true, -}; \ No newline at end of file diff --git a/pulls/1961/_static/doxyrest-pygments.css b/pulls/1961/_static/doxyrest-pygments.css deleted file mode 100644 index e06f2f28b8..0000000000 --- a/pulls/1961/_static/doxyrest-pygments.css +++ /dev/null @@ -1,21 +0,0 @@ -.highlight .k { color: #902000 !important; font-weight: bold !important } /* Keyword */ -.highlight .kc { color: #902000 !important; font-weight: bold !important } /* Keyword.Constant */ -.highlight .kd { color: #902000 !important; font-weight: bold !important } /* Keyword.Declaration */ -.highlight .kn { color: #902000 !important; font-weight: bold !important } /* Keyword.Namespace */ -.highlight .kp { color: #902000 !important; font-weight: bold !important } /* Keyword.Pseudo */ -.highlight .kr { color: #902000 !important; font-weight: bold !important } /* Keyword.Reserved */ -.highlight .kt { color: #902000 !important; font-weight: bold !important } /* Keyword.Type */ - -.highlight .nb { color: #902000 !important; font-weight: bold !important } /* Name.Builtin */ - -.highlight .na { color: #000000 !important; font-weight: normal !important } /* Name.Attribute */ -.highlight .nc { color: #000000 !important; font-weight: normal !important } /* Name.Class */ -.highlight .no { color: #000000 !important; font-weight: normal !important } /* Name.Constant */ -.highlight .nd { color: #000000 !important; font-weight: normal !important } /* Name.Decorator */ -.highlight .ni { color: #000000 !important; font-weight: normal !important } /* Name.Entity */ -.highlight .ne { color: #000000 !important; font-weight: normal !important } /* Name.Exception */ -.highlight .nf { color: #000000 !important; font-weight: normal !important } /* Name.Function */ -.highlight .nl { color: #000000 !important; font-weight: normal !important } /* Name.Label */ -.highlight .nn { color: #000000 !important; font-weight: normal !important } /* Name.Namespace */ -.highlight .nt { color: #000000 !important; font-weight: normal !important } /* Name.Tag */ -.highlight .nv { color: #000000 !important; font-weight: normal !important } /* Name.Variable */ diff --git a/pulls/1961/_static/dpctl.svg b/pulls/1961/_static/dpctl.svg deleted file mode 100644 index ea01287e7e..0000000000 --- a/pulls/1961/_static/dpctl.svg +++ /dev/null @@ -1,263 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pulls/1961/_static/file.png b/pulls/1961/_static/file.png deleted file mode 100644 index a858a410e4faa62ce324d814e4b816fff83a6fb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 286 zcmV+(0pb3MP)s`hMrGg#P~ix$^RISR_I47Y|r1 z_CyJOe}D1){SET-^Amu_i71Lt6eYfZjRyw@I6OQAIXXHDfiX^GbOlHe=Ae4>0m)d(f|Me07*qoM6N<$f}vM^LjV8( diff --git a/pulls/1961/_static/language_data.js b/pulls/1961/_static/language_data.js deleted file mode 100644 index 250f5665fa..0000000000 --- a/pulls/1961/_static/language_data.js +++ /dev/null @@ -1,199 +0,0 @@ -/* - * language_data.js - * ~~~~~~~~~~~~~~~~ - * - * This script contains the language-specific data used by searchtools.js, - * namely the list of stopwords, stemmer, scorer and splitter. - * - * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * - */ - -var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"]; - - -/* Non-minified version is copied as a separate JS file, is available */ - -/** - * Porter Stemmer - */ -var Stemmer = function() { - - var step2list = { - ational: 'ate', - tional: 'tion', - enci: 'ence', - anci: 'ance', - izer: 'ize', - bli: 'ble', - alli: 'al', - entli: 'ent', - eli: 'e', - ousli: 'ous', - ization: 'ize', - ation: 'ate', - ator: 'ate', - alism: 'al', - iveness: 'ive', - fulness: 'ful', - ousness: 'ous', - aliti: 'al', - iviti: 'ive', - biliti: 'ble', - logi: 'log' - }; - - var step3list = { - icate: 'ic', - ative: '', - alize: 'al', - iciti: 'ic', - ical: 'ic', - ful: '', - ness: '' - }; - - var c = "[^aeiou]"; // consonant - var v = "[aeiouy]"; // vowel - var C = c + "[^aeiouy]*"; // consonant sequence - var V = v + "[aeiou]*"; // vowel sequence - - var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 - var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 - var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 - var s_v = "^(" + C + ")?" + v; // vowel in stem - - this.stemWord = function (w) { - var stem; - var suffix; - var firstch; - var origword = w; - - if (w.length < 3) - return w; - - var re; - var re2; - var re3; - var re4; - - firstch = w.substr(0,1); - if (firstch == "y") - w = firstch.toUpperCase() + w.substr(1); - - // Step 1a - re = /^(.+?)(ss|i)es$/; - re2 = /^(.+?)([^s])s$/; - - if (re.test(w)) - w = w.replace(re,"$1$2"); - else if (re2.test(w)) - w = w.replace(re2,"$1$2"); - - // Step 1b - re = /^(.+?)eed$/; - re2 = /^(.+?)(ed|ing)$/; - if (re.test(w)) { - var fp = re.exec(w); - re = new RegExp(mgr0); - if (re.test(fp[1])) { - re = /.$/; - w = w.replace(re,""); - } - } - else if (re2.test(w)) { - var fp = re2.exec(w); - stem = fp[1]; - re2 = new RegExp(s_v); - if (re2.test(stem)) { - w = stem; - re2 = /(at|bl|iz)$/; - re3 = new RegExp("([^aeiouylsz])\\1$"); - re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); - if (re2.test(w)) - w = w + "e"; - else if (re3.test(w)) { - re = /.$/; - w = w.replace(re,""); - } - else if (re4.test(w)) - w = w + "e"; - } - } - - // Step 1c - re = /^(.+?)y$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = new RegExp(s_v); - if (re.test(stem)) - w = stem + "i"; - } - - // Step 2 - re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - suffix = fp[2]; - re = new RegExp(mgr0); - if (re.test(stem)) - w = stem + step2list[suffix]; - } - - // Step 3 - re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - suffix = fp[2]; - re = new RegExp(mgr0); - if (re.test(stem)) - w = stem + step3list[suffix]; - } - - // Step 4 - re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; - re2 = /^(.+?)(s|t)(ion)$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = new RegExp(mgr1); - if (re.test(stem)) - w = stem; - } - else if (re2.test(w)) { - var fp = re2.exec(w); - stem = fp[1] + fp[2]; - re2 = new RegExp(mgr1); - if (re2.test(stem)) - w = stem; - } - - // Step 5 - re = /^(.+?)e$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = new RegExp(mgr1); - re2 = new RegExp(meq1); - re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); - if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) - w = stem; - } - re = /ll$/; - re2 = new RegExp(mgr1); - if (re.test(w) && re2.test(w)) { - re = /.$/; - w = w.replace(re,""); - } - - // and turn initial Y back to y - if (firstch == "y") - w = firstch.toLowerCase() + w.substr(1); - return w; - } -} - diff --git a/pulls/1961/_static/minus.png b/pulls/1961/_static/minus.png deleted file mode 100644 index d96755fdaf8bb2214971e0db9c1fd3077d7c419d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^+#t*WBp7;*Yy1LIik>cxAr*|t7R?Mi>2?kWtu=nj kDsEF_5m^0CR;1wuP-*O&G^0G}KYk!hp00i_>zopr08q^qX#fBK diff --git a/pulls/1961/_static/plus.png b/pulls/1961/_static/plus.png deleted file mode 100644 index 7107cec93a979b9a5f64843235a16651d563ce2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^+#t*WBp7;*Yy1LIik>cxAr*|t7R?Mi>2?kWtu>-2 m3q%Vub%g%s<8sJhVPMczOq}xhg9DJoz~JfX=d#Wzp$Pyb1r*Kz diff --git a/pulls/1961/_static/pygments.css b/pulls/1961/_static/pygments.css deleted file mode 100644 index b0ef25bcf8..0000000000 --- a/pulls/1961/_static/pygments.css +++ /dev/null @@ -1,249 +0,0 @@ -.highlight pre { line-height: 125%; } -.highlight td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } -.highlight span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } -.highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } -.highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } -.highlight .hll { background-color: #ffffcc } -.highlight { background: #f8f8f8; } -.highlight .c { color: #3D7B7B; font-style: italic } /* Comment */ -.highlight .err { border: 1px solid #F00 } /* Error */ -.highlight .k { color: #008000; font-weight: bold } /* Keyword */ -.highlight .o { color: #666 } /* Operator */ -.highlight .ch { color: #3D7B7B; font-style: italic } /* Comment.Hashbang */ -.highlight .cm { color: #3D7B7B; font-style: italic } /* Comment.Multiline */ -.highlight .cp { color: #9C6500 } /* Comment.Preproc */ -.highlight .cpf { color: #3D7B7B; font-style: italic } /* Comment.PreprocFile */ -.highlight .c1 { color: #3D7B7B; font-style: italic } /* Comment.Single */ -.highlight .cs { color: #3D7B7B; font-style: italic } /* Comment.Special */ -.highlight .gd { color: #A00000 } /* Generic.Deleted */ -.highlight .ge { font-style: italic } /* Generic.Emph */ -.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */ -.highlight .gr { color: #E40000 } /* Generic.Error */ -.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ -.highlight .gi { color: #008400 } /* Generic.Inserted */ -.highlight .go { color: #717171 } /* Generic.Output */ -.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */ -.highlight .gs { font-weight: bold } /* Generic.Strong */ -.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ -.highlight .gt { color: #04D } /* Generic.Traceback */ -.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */ -.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */ -.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */ -.highlight .kp { color: #008000 } /* Keyword.Pseudo */ -.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */ -.highlight .kt { color: #B00040 } /* Keyword.Type */ -.highlight .m { color: #666 } /* Literal.Number */ -.highlight .s { color: #BA2121 } /* Literal.String */ -.highlight .na { color: #687822 } /* Name.Attribute */ -.highlight .nb { color: #008000 } /* Name.Builtin */ -.highlight .nc { color: #00F; font-weight: bold } /* Name.Class */ -.highlight .no { color: #800 } /* Name.Constant */ -.highlight .nd { color: #A2F } /* Name.Decorator */ -.highlight .ni { color: #717171; font-weight: bold } /* Name.Entity */ -.highlight .ne { color: #CB3F38; font-weight: bold } /* Name.Exception */ -.highlight .nf { color: #00F } /* Name.Function */ -.highlight .nl { color: #767600 } /* Name.Label */ -.highlight .nn { color: #00F; font-weight: bold } /* Name.Namespace */ -.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */ -.highlight .nv { color: #19177C } /* Name.Variable */ -.highlight .ow { color: #A2F; font-weight: bold } /* Operator.Word */ -.highlight .w { color: #BBB } /* Text.Whitespace */ -.highlight .mb { color: #666 } /* Literal.Number.Bin */ -.highlight .mf { color: #666 } /* Literal.Number.Float */ -.highlight .mh { color: #666 } /* Literal.Number.Hex */ -.highlight .mi { color: #666 } /* Literal.Number.Integer */ -.highlight .mo { color: #666 } /* Literal.Number.Oct */ -.highlight .sa { color: #BA2121 } /* Literal.String.Affix */ -.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */ -.highlight .sc { color: #BA2121 } /* Literal.String.Char */ -.highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */ -.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */ -.highlight .s2 { color: #BA2121 } /* Literal.String.Double */ -.highlight .se { color: #AA5D1F; font-weight: bold } /* Literal.String.Escape */ -.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */ -.highlight .si { color: #A45A77; font-weight: bold } /* Literal.String.Interpol */ -.highlight .sx { color: #008000 } /* Literal.String.Other */ -.highlight .sr { color: #A45A77 } /* Literal.String.Regex */ -.highlight .s1 { color: #BA2121 } /* Literal.String.Single */ -.highlight .ss { color: #19177C } /* Literal.String.Symbol */ -.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */ -.highlight .fm { color: #00F } /* Name.Function.Magic */ -.highlight .vc { color: #19177C } /* Name.Variable.Class */ -.highlight .vg { color: #19177C } /* Name.Variable.Global */ -.highlight .vi { color: #19177C } /* Name.Variable.Instance */ -.highlight .vm { color: #19177C } /* Name.Variable.Magic */ -.highlight .il { color: #666 } /* Literal.Number.Integer.Long */ -@media not print { -body[data-theme="dark"] .highlight pre { line-height: 125%; } -body[data-theme="dark"] .highlight td.linenos .normal { color: #aaaaaa; background-color: transparent; padding-left: 5px; padding-right: 5px; } -body[data-theme="dark"] .highlight span.linenos { color: #aaaaaa; background-color: transparent; padding-left: 5px; padding-right: 5px; } -body[data-theme="dark"] .highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } -body[data-theme="dark"] .highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } -body[data-theme="dark"] .highlight .hll { background-color: #404040 } -body[data-theme="dark"] .highlight { background: #202020; color: #D0D0D0 } -body[data-theme="dark"] .highlight .c { color: #ABABAB; font-style: italic } /* Comment */ -body[data-theme="dark"] .highlight .err { color: #A61717; background-color: #E3D2D2 } /* Error */ -body[data-theme="dark"] .highlight .esc { color: #D0D0D0 } /* Escape */ -body[data-theme="dark"] .highlight .g { color: #D0D0D0 } /* Generic */ -body[data-theme="dark"] .highlight .k { color: #6EBF26; font-weight: bold } /* Keyword */ -body[data-theme="dark"] .highlight .l { color: #D0D0D0 } /* Literal */ -body[data-theme="dark"] .highlight .n { color: #D0D0D0 } /* Name */ -body[data-theme="dark"] .highlight .o { color: #D0D0D0 } /* Operator */ -body[data-theme="dark"] .highlight .x { color: #D0D0D0 } /* Other */ -body[data-theme="dark"] .highlight .p { color: #D0D0D0 } /* Punctuation */ -body[data-theme="dark"] .highlight .ch { color: #ABABAB; font-style: italic } /* Comment.Hashbang */ -body[data-theme="dark"] .highlight .cm { color: #ABABAB; font-style: italic } /* Comment.Multiline */ -body[data-theme="dark"] .highlight .cp { color: #FF3A3A; font-weight: bold } /* Comment.Preproc */ -body[data-theme="dark"] .highlight .cpf { color: #ABABAB; font-style: italic } /* Comment.PreprocFile */ -body[data-theme="dark"] .highlight .c1 { color: #ABABAB; font-style: italic } /* Comment.Single */ -body[data-theme="dark"] .highlight .cs { color: #E50808; font-weight: bold; background-color: #520000 } /* Comment.Special */ -body[data-theme="dark"] .highlight .gd { color: #FF3A3A } /* Generic.Deleted */ -body[data-theme="dark"] .highlight .ge { color: #D0D0D0; font-style: italic } /* Generic.Emph */ -body[data-theme="dark"] .highlight .ges { color: #D0D0D0; font-weight: bold; font-style: italic } /* Generic.EmphStrong */ -body[data-theme="dark"] .highlight .gr { color: #FF3A3A } /* Generic.Error */ -body[data-theme="dark"] .highlight .gh { color: #FFF; font-weight: bold } /* Generic.Heading */ -body[data-theme="dark"] .highlight .gi { color: #589819 } /* Generic.Inserted */ -body[data-theme="dark"] .highlight .go { color: #CCC } /* Generic.Output */ -body[data-theme="dark"] .highlight .gp { color: #AAA } /* Generic.Prompt */ -body[data-theme="dark"] .highlight .gs { color: #D0D0D0; font-weight: bold } /* Generic.Strong */ -body[data-theme="dark"] .highlight .gu { color: #FFF; text-decoration: underline } /* Generic.Subheading */ -body[data-theme="dark"] .highlight .gt { color: #FF3A3A } /* Generic.Traceback */ -body[data-theme="dark"] .highlight .kc { color: #6EBF26; font-weight: bold } /* Keyword.Constant */ -body[data-theme="dark"] .highlight .kd { color: #6EBF26; font-weight: bold } /* Keyword.Declaration */ -body[data-theme="dark"] .highlight .kn { color: #6EBF26; font-weight: bold } /* Keyword.Namespace */ -body[data-theme="dark"] .highlight .kp { color: #6EBF26 } /* Keyword.Pseudo */ -body[data-theme="dark"] .highlight .kr { color: #6EBF26; font-weight: bold } /* Keyword.Reserved */ -body[data-theme="dark"] .highlight .kt { color: #6EBF26; font-weight: bold } /* Keyword.Type */ -body[data-theme="dark"] .highlight .ld { color: #D0D0D0 } /* Literal.Date */ -body[data-theme="dark"] .highlight .m { color: #51B2FD } /* Literal.Number */ -body[data-theme="dark"] .highlight .s { color: #ED9D13 } /* Literal.String */ -body[data-theme="dark"] .highlight .na { color: #BBB } /* Name.Attribute */ -body[data-theme="dark"] .highlight .nb { color: #2FBCCD } /* Name.Builtin */ -body[data-theme="dark"] .highlight .nc { color: #71ADFF; text-decoration: underline } /* Name.Class */ -body[data-theme="dark"] .highlight .no { color: #40FFFF } /* Name.Constant */ -body[data-theme="dark"] .highlight .nd { color: #FFA500 } /* Name.Decorator */ -body[data-theme="dark"] .highlight .ni { color: #D0D0D0 } /* Name.Entity */ -body[data-theme="dark"] .highlight .ne { color: #BBB } /* Name.Exception */ -body[data-theme="dark"] .highlight .nf { color: #71ADFF } /* Name.Function */ -body[data-theme="dark"] .highlight .nl { color: #D0D0D0 } /* Name.Label */ -body[data-theme="dark"] .highlight .nn { color: #71ADFF; text-decoration: underline } /* Name.Namespace */ -body[data-theme="dark"] .highlight .nx { color: #D0D0D0 } /* Name.Other */ -body[data-theme="dark"] .highlight .py { color: #D0D0D0 } /* Name.Property */ -body[data-theme="dark"] .highlight .nt { color: #6EBF26; font-weight: bold } /* Name.Tag */ -body[data-theme="dark"] .highlight .nv { color: #40FFFF } /* Name.Variable */ -body[data-theme="dark"] .highlight .ow { color: #6EBF26; font-weight: bold } /* Operator.Word */ -body[data-theme="dark"] .highlight .pm { color: #D0D0D0 } /* Punctuation.Marker */ -body[data-theme="dark"] .highlight .w { color: #666 } /* Text.Whitespace */ -body[data-theme="dark"] .highlight .mb { color: #51B2FD } /* Literal.Number.Bin */ -body[data-theme="dark"] .highlight .mf { color: #51B2FD } /* Literal.Number.Float */ -body[data-theme="dark"] .highlight .mh { color: #51B2FD } /* Literal.Number.Hex */ -body[data-theme="dark"] .highlight .mi { color: #51B2FD } /* Literal.Number.Integer */ -body[data-theme="dark"] .highlight .mo { color: #51B2FD } /* Literal.Number.Oct */ -body[data-theme="dark"] .highlight .sa { color: #ED9D13 } /* Literal.String.Affix */ -body[data-theme="dark"] .highlight .sb { color: #ED9D13 } /* Literal.String.Backtick */ -body[data-theme="dark"] .highlight .sc { color: #ED9D13 } /* Literal.String.Char */ -body[data-theme="dark"] .highlight .dl { color: #ED9D13 } /* Literal.String.Delimiter */ -body[data-theme="dark"] .highlight .sd { color: #ED9D13 } /* Literal.String.Doc */ -body[data-theme="dark"] .highlight .s2 { color: #ED9D13 } /* Literal.String.Double */ -body[data-theme="dark"] .highlight .se { color: #ED9D13 } /* Literal.String.Escape */ -body[data-theme="dark"] .highlight .sh { color: #ED9D13 } /* Literal.String.Heredoc */ -body[data-theme="dark"] .highlight .si { color: #ED9D13 } /* Literal.String.Interpol */ -body[data-theme="dark"] .highlight .sx { color: #FFA500 } /* Literal.String.Other */ -body[data-theme="dark"] .highlight .sr { color: #ED9D13 } /* Literal.String.Regex */ -body[data-theme="dark"] .highlight .s1 { color: #ED9D13 } /* Literal.String.Single */ -body[data-theme="dark"] .highlight .ss { color: #ED9D13 } /* Literal.String.Symbol */ -body[data-theme="dark"] .highlight .bp { color: #2FBCCD } /* Name.Builtin.Pseudo */ -body[data-theme="dark"] .highlight .fm { color: #71ADFF } /* Name.Function.Magic */ -body[data-theme="dark"] .highlight .vc { color: #40FFFF } /* Name.Variable.Class */ -body[data-theme="dark"] .highlight .vg { color: #40FFFF } /* Name.Variable.Global */ -body[data-theme="dark"] .highlight .vi { color: #40FFFF } /* Name.Variable.Instance */ -body[data-theme="dark"] .highlight .vm { color: #40FFFF } /* Name.Variable.Magic */ -body[data-theme="dark"] .highlight .il { color: #51B2FD } /* Literal.Number.Integer.Long */ -@media (prefers-color-scheme: dark) { -body:not([data-theme="light"]) .highlight pre { line-height: 125%; } -body:not([data-theme="light"]) .highlight td.linenos .normal { color: #aaaaaa; background-color: transparent; padding-left: 5px; padding-right: 5px; } -body:not([data-theme="light"]) .highlight span.linenos { color: #aaaaaa; background-color: transparent; padding-left: 5px; padding-right: 5px; } -body:not([data-theme="light"]) .highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } -body:not([data-theme="light"]) .highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } -body:not([data-theme="light"]) .highlight .hll { background-color: #404040 } -body:not([data-theme="light"]) .highlight { background: #202020; color: #D0D0D0 } -body:not([data-theme="light"]) .highlight .c { color: #ABABAB; font-style: italic } /* Comment */ -body:not([data-theme="light"]) .highlight .err { color: #A61717; background-color: #E3D2D2 } /* Error */ -body:not([data-theme="light"]) .highlight .esc { color: #D0D0D0 } /* Escape */ -body:not([data-theme="light"]) .highlight .g { color: #D0D0D0 } /* Generic */ -body:not([data-theme="light"]) .highlight .k { color: #6EBF26; font-weight: bold } /* Keyword */ -body:not([data-theme="light"]) .highlight .l { color: #D0D0D0 } /* Literal */ -body:not([data-theme="light"]) .highlight .n { color: #D0D0D0 } /* Name */ -body:not([data-theme="light"]) .highlight .o { color: #D0D0D0 } /* Operator */ -body:not([data-theme="light"]) .highlight .x { color: #D0D0D0 } /* Other */ -body:not([data-theme="light"]) .highlight .p { color: #D0D0D0 } /* Punctuation */ -body:not([data-theme="light"]) .highlight .ch { color: #ABABAB; font-style: italic } /* Comment.Hashbang */ -body:not([data-theme="light"]) .highlight .cm { color: #ABABAB; font-style: italic } /* Comment.Multiline */ -body:not([data-theme="light"]) .highlight .cp { color: #FF3A3A; font-weight: bold } /* Comment.Preproc */ -body:not([data-theme="light"]) .highlight .cpf { color: #ABABAB; font-style: italic } /* Comment.PreprocFile */ -body:not([data-theme="light"]) .highlight .c1 { color: #ABABAB; font-style: italic } /* Comment.Single */ -body:not([data-theme="light"]) .highlight .cs { color: #E50808; font-weight: bold; background-color: #520000 } /* Comment.Special */ -body:not([data-theme="light"]) .highlight .gd { color: #FF3A3A } /* Generic.Deleted */ -body:not([data-theme="light"]) .highlight .ge { color: #D0D0D0; font-style: italic } /* Generic.Emph */ -body:not([data-theme="light"]) .highlight .ges { color: #D0D0D0; font-weight: bold; font-style: italic } /* Generic.EmphStrong */ -body:not([data-theme="light"]) .highlight .gr { color: #FF3A3A } /* Generic.Error */ -body:not([data-theme="light"]) .highlight .gh { color: #FFF; font-weight: bold } /* Generic.Heading */ -body:not([data-theme="light"]) .highlight .gi { color: #589819 } /* Generic.Inserted */ -body:not([data-theme="light"]) .highlight .go { color: #CCC } /* Generic.Output */ -body:not([data-theme="light"]) .highlight .gp { color: #AAA } /* Generic.Prompt */ -body:not([data-theme="light"]) .highlight .gs { color: #D0D0D0; font-weight: bold } /* Generic.Strong */ -body:not([data-theme="light"]) .highlight .gu { color: #FFF; text-decoration: underline } /* Generic.Subheading */ -body:not([data-theme="light"]) .highlight .gt { color: #FF3A3A } /* Generic.Traceback */ -body:not([data-theme="light"]) .highlight .kc { color: #6EBF26; font-weight: bold } /* Keyword.Constant */ -body:not([data-theme="light"]) .highlight .kd { color: #6EBF26; font-weight: bold } /* Keyword.Declaration */ -body:not([data-theme="light"]) .highlight .kn { color: #6EBF26; font-weight: bold } /* Keyword.Namespace */ -body:not([data-theme="light"]) .highlight .kp { color: #6EBF26 } /* Keyword.Pseudo */ -body:not([data-theme="light"]) .highlight .kr { color: #6EBF26; font-weight: bold } /* Keyword.Reserved */ -body:not([data-theme="light"]) .highlight .kt { color: #6EBF26; font-weight: bold } /* Keyword.Type */ -body:not([data-theme="light"]) .highlight .ld { color: #D0D0D0 } /* Literal.Date */ -body:not([data-theme="light"]) .highlight .m { color: #51B2FD } /* Literal.Number */ -body:not([data-theme="light"]) .highlight .s { color: #ED9D13 } /* Literal.String */ -body:not([data-theme="light"]) .highlight .na { color: #BBB } /* Name.Attribute */ -body:not([data-theme="light"]) .highlight .nb { color: #2FBCCD } /* Name.Builtin */ -body:not([data-theme="light"]) .highlight .nc { color: #71ADFF; text-decoration: underline } /* Name.Class */ -body:not([data-theme="light"]) .highlight .no { color: #40FFFF } /* Name.Constant */ -body:not([data-theme="light"]) .highlight .nd { color: #FFA500 } /* Name.Decorator */ -body:not([data-theme="light"]) .highlight .ni { color: #D0D0D0 } /* Name.Entity */ -body:not([data-theme="light"]) .highlight .ne { color: #BBB } /* Name.Exception */ -body:not([data-theme="light"]) .highlight .nf { color: #71ADFF } /* Name.Function */ -body:not([data-theme="light"]) .highlight .nl { color: #D0D0D0 } /* Name.Label */ -body:not([data-theme="light"]) .highlight .nn { color: #71ADFF; text-decoration: underline } /* Name.Namespace */ -body:not([data-theme="light"]) .highlight .nx { color: #D0D0D0 } /* Name.Other */ -body:not([data-theme="light"]) .highlight .py { color: #D0D0D0 } /* Name.Property */ -body:not([data-theme="light"]) .highlight .nt { color: #6EBF26; font-weight: bold } /* Name.Tag */ -body:not([data-theme="light"]) .highlight .nv { color: #40FFFF } /* Name.Variable */ -body:not([data-theme="light"]) .highlight .ow { color: #6EBF26; font-weight: bold } /* Operator.Word */ -body:not([data-theme="light"]) .highlight .pm { color: #D0D0D0 } /* Punctuation.Marker */ -body:not([data-theme="light"]) .highlight .w { color: #666 } /* Text.Whitespace */ -body:not([data-theme="light"]) .highlight .mb { color: #51B2FD } /* Literal.Number.Bin */ -body:not([data-theme="light"]) .highlight .mf { color: #51B2FD } /* Literal.Number.Float */ -body:not([data-theme="light"]) .highlight .mh { color: #51B2FD } /* Literal.Number.Hex */ -body:not([data-theme="light"]) .highlight .mi { color: #51B2FD } /* Literal.Number.Integer */ -body:not([data-theme="light"]) .highlight .mo { color: #51B2FD } /* Literal.Number.Oct */ -body:not([data-theme="light"]) .highlight .sa { color: #ED9D13 } /* Literal.String.Affix */ -body:not([data-theme="light"]) .highlight .sb { color: #ED9D13 } /* Literal.String.Backtick */ -body:not([data-theme="light"]) .highlight .sc { color: #ED9D13 } /* Literal.String.Char */ -body:not([data-theme="light"]) .highlight .dl { color: #ED9D13 } /* Literal.String.Delimiter */ -body:not([data-theme="light"]) .highlight .sd { color: #ED9D13 } /* Literal.String.Doc */ -body:not([data-theme="light"]) .highlight .s2 { color: #ED9D13 } /* Literal.String.Double */ -body:not([data-theme="light"]) .highlight .se { color: #ED9D13 } /* Literal.String.Escape */ -body:not([data-theme="light"]) .highlight .sh { color: #ED9D13 } /* Literal.String.Heredoc */ -body:not([data-theme="light"]) .highlight .si { color: #ED9D13 } /* Literal.String.Interpol */ -body:not([data-theme="light"]) .highlight .sx { color: #FFA500 } /* Literal.String.Other */ -body:not([data-theme="light"]) .highlight .sr { color: #ED9D13 } /* Literal.String.Regex */ -body:not([data-theme="light"]) .highlight .s1 { color: #ED9D13 } /* Literal.String.Single */ -body:not([data-theme="light"]) .highlight .ss { color: #ED9D13 } /* Literal.String.Symbol */ -body:not([data-theme="light"]) .highlight .bp { color: #2FBCCD } /* Name.Builtin.Pseudo */ -body:not([data-theme="light"]) .highlight .fm { color: #71ADFF } /* Name.Function.Magic */ -body:not([data-theme="light"]) .highlight .vc { color: #40FFFF } /* Name.Variable.Class */ -body:not([data-theme="light"]) .highlight .vg { color: #40FFFF } /* Name.Variable.Global */ -body:not([data-theme="light"]) .highlight .vi { color: #40FFFF } /* Name.Variable.Instance */ -body:not([data-theme="light"]) .highlight .vm { color: #40FFFF } /* Name.Variable.Magic */ -body:not([data-theme="light"]) .highlight .il { color: #51B2FD } /* Literal.Number.Integer.Long */ -} -} \ No newline at end of file diff --git a/pulls/1961/_static/scripts/furo-extensions.js b/pulls/1961/_static/scripts/furo-extensions.js deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/pulls/1961/_static/scripts/furo.js b/pulls/1961/_static/scripts/furo.js deleted file mode 100644 index 0abb2afac2..0000000000 --- a/pulls/1961/_static/scripts/furo.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! For license information please see furo.js.LICENSE.txt */ -(()=>{var t={856:function(t,e,n){var o,r;r=void 0!==n.g?n.g:"undefined"!=typeof window?window:this,o=function(){return function(t){"use strict";var e={navClass:"active",contentClass:"active",nested:!1,nestedClass:"active",offset:0,reflow:!1,events:!0},n=function(t,e,n){if(n.settings.events){var o=new CustomEvent(t,{bubbles:!0,cancelable:!0,detail:n});e.dispatchEvent(o)}},o=function(t){var e=0;if(t.offsetParent)for(;t;)e+=t.offsetTop,t=t.offsetParent;return e>=0?e:0},r=function(t){t&&t.sort((function(t,e){return o(t.content)=Math.max(document.body.scrollHeight,document.documentElement.scrollHeight,document.body.offsetHeight,document.documentElement.offsetHeight,document.body.clientHeight,document.documentElement.clientHeight)},l=function(t,e){var n=t[t.length-1];if(function(t,e){return!(!s()||!c(t.content,e,!0))}(n,e))return n;for(var o=t.length-1;o>=0;o--)if(c(t[o].content,e))return t[o]},a=function(t,e){if(e.nested&&t.parentNode){var n=t.parentNode.closest("li");n&&(n.classList.remove(e.nestedClass),a(n,e))}},i=function(t,e){if(t){var o=t.nav.closest("li");o&&(o.classList.remove(e.navClass),t.content.classList.remove(e.contentClass),a(o,e),n("gumshoeDeactivate",o,{link:t.nav,content:t.content,settings:e}))}},u=function(t,e){if(e.nested){var n=t.parentNode.closest("li");n&&(n.classList.add(e.nestedClass),u(n,e))}};return function(o,c){var s,a,d,f,m,v={setup:function(){s=document.querySelectorAll(o),a=[],Array.prototype.forEach.call(s,(function(t){var e=document.getElementById(decodeURIComponent(t.hash.substr(1)));e&&a.push({nav:t,content:e})})),r(a)},detect:function(){var t=l(a,m);t?d&&t.content===d.content||(i(d,m),function(t,e){if(t){var o=t.nav.closest("li");o&&(o.classList.add(e.navClass),t.content.classList.add(e.contentClass),u(o,e),n("gumshoeActivate",o,{link:t.nav,content:t.content,settings:e}))}}(t,m),d=t):d&&(i(d,m),d=null)}},h=function(e){f&&t.cancelAnimationFrame(f),f=t.requestAnimationFrame(v.detect)},g=function(e){f&&t.cancelAnimationFrame(f),f=t.requestAnimationFrame((function(){r(a),v.detect()}))};return v.destroy=function(){d&&i(d,m),t.removeEventListener("scroll",h,!1),m.reflow&&t.removeEventListener("resize",g,!1),a=null,s=null,d=null,f=null,m=null},m=function(){var t={};return Array.prototype.forEach.call(arguments,(function(e){for(var n in e){if(!e.hasOwnProperty(n))return;t[n]=e[n]}})),t}(e,c||{}),v.setup(),v.detect(),t.addEventListener("scroll",h,!1),m.reflow&&t.addEventListener("resize",g,!1),v}}(r)}.apply(e,[]),void 0===o||(t.exports=o)}},e={};function n(o){var r=e[o];if(void 0!==r)return r.exports;var c=e[o]={exports:{}};return t[o].call(c.exports,c,c.exports,n),c.exports}n.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},n.d=(t,e)=>{for(var o in e)n.o(e,o)&&!n.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:e[o]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),(()=>{"use strict";var t=n(856),e=n.n(t),o=null,r=null,c=document.documentElement.scrollTop;const s=64;function l(){const t=localStorage.getItem("theme")||"auto";var e;"light"!==(e=window.matchMedia("(prefers-color-scheme: dark)").matches?"auto"===t?"light":"light"==t?"dark":"auto":"auto"===t?"dark":"dark"==t?"light":"auto")&&"dark"!==e&&"auto"!==e&&(console.error(`Got invalid theme mode: ${e}. Resetting to auto.`),e="auto"),document.body.dataset.theme=e,localStorage.setItem("theme",e),console.log(`Changed to ${e} mode.`)}function a(){!function(){const t=document.getElementsByClassName("theme-toggle");Array.from(t).forEach((t=>{t.addEventListener("click",l)}))}(),function(){let t=0,e=!1;window.addEventListener("scroll",(function(n){t=window.scrollY,e||(window.requestAnimationFrame((function(){var n;(function(t){const e=Math.floor(r.getBoundingClientRect().top);console.log(`headerTop: ${e}`),0==e&&t!=e?r.classList.add("scrolled"):r.classList.remove("scrolled")})(n=t),function(t){tc&&document.documentElement.classList.remove("show-back-to-top"),c=t}(n),function(t){null!==o&&(0==t?o.scrollTo(0,0):Math.ceil(t)>=Math.floor(document.documentElement.scrollHeight-window.innerHeight)?o.scrollTo(0,o.scrollHeight):document.querySelector(".scroll-current"))}(n),e=!1})),e=!0)})),window.scroll()}(),null!==o&&new(e())(".toc-tree a",{reflow:!0,recursive:!0,navClass:"scroll-current",offset:()=>{let t=parseFloat(getComputedStyle(document.documentElement).fontSize);return r.getBoundingClientRect().height+2.5*t+1}})}document.addEventListener("DOMContentLoaded",(function(){document.body.parentNode.classList.remove("no-js"),r=document.querySelector("header"),o=document.querySelector(".toc-scroll"),a()}))})()})(); -//# sourceMappingURL=furo.js.map \ No newline at end of file diff --git a/pulls/1961/_static/scripts/furo.js.LICENSE.txt b/pulls/1961/_static/scripts/furo.js.LICENSE.txt deleted file mode 100644 index 1632189c7e..0000000000 --- a/pulls/1961/_static/scripts/furo.js.LICENSE.txt +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * gumshoejs v5.1.2 (patched by @pradyunsg) - * A simple, framework-agnostic scrollspy script. - * (c) 2019 Chris Ferdinandi - * MIT License - * http://github.com/cferdinandi/gumshoe - */ diff --git a/pulls/1961/_static/scripts/furo.js.map b/pulls/1961/_static/scripts/furo.js.map deleted file mode 100644 index 80ea12b851..0000000000 --- a/pulls/1961/_static/scripts/furo.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"scripts/furo.js","mappings":";iCAAA,MAQWA,SAWS,IAAX,EAAAC,EACH,EAAAA,EACkB,oBAAXC,OACLA,OACAC,KAbO,EAAF,WACP,OAaJ,SAAUD,GACR,aAMA,IAAIE,EAAW,CAEbC,SAAU,SACVC,aAAc,SAGdC,QAAQ,EACRC,YAAa,SAGbC,OAAQ,EACRC,QAAQ,EAGRC,QAAQ,GA6BNC,EAAY,SAAUC,EAAMC,EAAMC,GAEpC,GAAKA,EAAOC,SAASL,OAArB,CAGA,IAAIM,EAAQ,IAAIC,YAAYL,EAAM,CAChCM,SAAS,EACTC,YAAY,EACZL,OAAQA,IAIVD,EAAKO,cAAcJ,EAVgB,CAWrC,EAOIK,EAAe,SAAUR,GAC3B,IAAIS,EAAW,EACf,GAAIT,EAAKU,aACP,KAAOV,GACLS,GAAYT,EAAKW,UACjBX,EAAOA,EAAKU,aAGhB,OAAOD,GAAY,EAAIA,EAAW,CACpC,EAMIG,EAAe,SAAUC,GACvBA,GACFA,EAASC,MAAK,SAAUC,EAAOC,GAG7B,OAFcR,EAAaO,EAAME,SACnBT,EAAaQ,EAAMC,UACF,EACxB,CACT,GAEJ,EAwCIC,EAAW,SAAUlB,EAAME,EAAUiB,GACvC,IAAIC,EAASpB,EAAKqB,wBACd1B,EAnCU,SAAUO,GAExB,MAA+B,mBAApBA,EAASP,OACX2B,WAAWpB,EAASP,UAItB2B,WAAWpB,EAASP,OAC7B,CA2Be4B,CAAUrB,GACvB,OAAIiB,EAEAK,SAASJ,EAAOD,OAAQ,KACvB/B,EAAOqC,aAAeC,SAASC,gBAAgBC,cAG7CJ,SAASJ,EAAOS,IAAK,KAAOlC,CACrC,EAMImC,EAAa,WACf,OACEC,KAAKC,KAAK5C,EAAOqC,YAAcrC,EAAO6C,cAnCjCF,KAAKG,IACVR,SAASS,KAAKC,aACdV,SAASC,gBAAgBS,aACzBV,SAASS,KAAKE,aACdX,SAASC,gBAAgBU,aACzBX,SAASS,KAAKP,aACdF,SAASC,gBAAgBC,aAkC7B,EAmBIU,EAAY,SAAUzB,EAAUX,GAClC,IAAIqC,EAAO1B,EAASA,EAAS2B,OAAS,GACtC,GAbgB,SAAUC,EAAMvC,GAChC,SAAI4B,MAAgBZ,EAASuB,EAAKxB,QAASf,GAAU,GAEvD,CAUMwC,CAAYH,EAAMrC,GAAW,OAAOqC,EACxC,IAAK,IAAII,EAAI9B,EAAS2B,OAAS,EAAGG,GAAK,EAAGA,IACxC,GAAIzB,EAASL,EAAS8B,GAAG1B,QAASf,GAAW,OAAOW,EAAS8B,EAEjE,EAOIC,EAAmB,SAAUC,EAAK3C,GAEpC,GAAKA,EAAST,QAAWoD,EAAIC,WAA7B,CAGA,IAAIC,EAAKF,EAAIC,WAAWE,QAAQ,MAC3BD,IAGLA,EAAGE,UAAUC,OAAOhD,EAASR,aAG7BkD,EAAiBG,EAAI7C,GAV0B,CAWjD,EAOIiD,EAAa,SAAUC,EAAOlD,GAEhC,GAAKkD,EAAL,CAGA,IAAIL,EAAKK,EAAMP,IAAIG,QAAQ,MACtBD,IAGLA,EAAGE,UAAUC,OAAOhD,EAASX,UAC7B6D,EAAMnC,QAAQgC,UAAUC,OAAOhD,EAASV,cAGxCoD,EAAiBG,EAAI7C,GAGrBJ,EAAU,oBAAqBiD,EAAI,CACjCM,KAAMD,EAAMP,IACZ5B,QAASmC,EAAMnC,QACff,SAAUA,IAjBM,CAmBpB,EAOIoD,EAAiB,SAAUT,EAAK3C,GAElC,GAAKA,EAAST,OAAd,CAGA,IAAIsD,EAAKF,EAAIC,WAAWE,QAAQ,MAC3BD,IAGLA,EAAGE,UAAUM,IAAIrD,EAASR,aAG1B4D,EAAeP,EAAI7C,GAVS,CAW9B,EA6LA,OA1JkB,SAAUsD,EAAUC,GAKpC,IACIC,EAAU7C,EAAU8C,EAASC,EAAS1D,EADtC2D,EAAa,CAUjBA,MAAmB,WAEjBH,EAAWhC,SAASoC,iBAAiBN,GAGrC3C,EAAW,GAGXkD,MAAMC,UAAUC,QAAQC,KAAKR,GAAU,SAAUjB,GAE/C,IAAIxB,EAAUS,SAASyC,eACrBC,mBAAmB3B,EAAK4B,KAAKC,OAAO,KAEjCrD,GAGLJ,EAAS0D,KAAK,CACZ1B,IAAKJ,EACLxB,QAASA,GAEb,IAGAL,EAAaC,EACf,EAKAgD,OAAoB,WAElB,IAAIW,EAASlC,EAAUzB,EAAUX,GAG5BsE,EASDb,GAAWa,EAAOvD,UAAY0C,EAAQ1C,UAG1CkC,EAAWQ,EAASzD,GAzFT,SAAUkD,EAAOlD,GAE9B,GAAKkD,EAAL,CAGA,IAAIL,EAAKK,EAAMP,IAAIG,QAAQ,MACtBD,IAGLA,EAAGE,UAAUM,IAAIrD,EAASX,UAC1B6D,EAAMnC,QAAQgC,UAAUM,IAAIrD,EAASV,cAGrC8D,EAAeP,EAAI7C,GAGnBJ,EAAU,kBAAmBiD,EAAI,CAC/BM,KAAMD,EAAMP,IACZ5B,QAASmC,EAAMnC,QACff,SAAUA,IAjBM,CAmBpB,CAqEIuE,CAASD,EAAQtE,GAGjByD,EAAUa,GAfJb,IACFR,EAAWQ,EAASzD,GACpByD,EAAU,KAchB,GAMIe,EAAgB,SAAUvE,GAExByD,GACFxE,EAAOuF,qBAAqBf,GAI9BA,EAAUxE,EAAOwF,sBAAsBf,EAAWgB,OACpD,EAMIC,EAAgB,SAAU3E,GAExByD,GACFxE,EAAOuF,qBAAqBf,GAI9BA,EAAUxE,EAAOwF,uBAAsB,WACrChE,EAAaC,GACbgD,EAAWgB,QACb,GACF,EAkDA,OA7CAhB,EAAWkB,QAAU,WAEfpB,GACFR,EAAWQ,EAASzD,GAItBd,EAAO4F,oBAAoB,SAAUN,GAAe,GAChDxE,EAASN,QACXR,EAAO4F,oBAAoB,SAAUF,GAAe,GAItDjE,EAAW,KACX6C,EAAW,KACXC,EAAU,KACVC,EAAU,KACV1D,EAAW,IACb,EAOEA,EA3XS,WACX,IAAI+E,EAAS,CAAC,EAOd,OANAlB,MAAMC,UAAUC,QAAQC,KAAKgB,WAAW,SAAUC,GAChD,IAAK,IAAIC,KAAOD,EAAK,CACnB,IAAKA,EAAIE,eAAeD,GAAM,OAC9BH,EAAOG,GAAOD,EAAIC,EACpB,CACF,IACOH,CACT,CAkXeK,CAAOhG,EAAUmE,GAAW,CAAC,GAGxCI,EAAW0B,QAGX1B,EAAWgB,SAGXzF,EAAOoG,iBAAiB,SAAUd,GAAe,GAC7CxE,EAASN,QACXR,EAAOoG,iBAAiB,SAAUV,GAAe,GAS9CjB,CACT,CAOF,CArcW4B,CAAQvG,EAChB,UAFM,SAEN,uBCXDwG,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAaE,QAGrB,IAAIC,EAASN,EAAyBE,GAAY,CAGjDG,QAAS,CAAC,GAOX,OAHAE,EAAoBL,GAAU1B,KAAK8B,EAAOD,QAASC,EAAQA,EAAOD,QAASJ,GAGpEK,EAAOD,OACf,CCrBAJ,EAAoBO,EAAKF,IACxB,IAAIG,EAASH,GAAUA,EAAOI,WAC7B,IAAOJ,EAAiB,QACxB,IAAM,EAEP,OADAL,EAAoBU,EAAEF,EAAQ,CAAEG,EAAGH,IAC5BA,CAAM,ECLdR,EAAoBU,EAAI,CAACN,EAASQ,KACjC,IAAI,IAAInB,KAAOmB,EACXZ,EAAoBa,EAAED,EAAYnB,KAASO,EAAoBa,EAAET,EAASX,IAC5EqB,OAAOC,eAAeX,EAASX,EAAK,CAAEuB,YAAY,EAAMC,IAAKL,EAAWnB,IAE1E,ECNDO,EAAoBxG,EAAI,WACvB,GAA0B,iBAAf0H,WAAyB,OAAOA,WAC3C,IACC,OAAOxH,MAAQ,IAAIyH,SAAS,cAAb,EAChB,CAAE,MAAOC,GACR,GAAsB,iBAAX3H,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxBuG,EAAoBa,EAAI,CAACrB,EAAK6B,IAAUP,OAAOzC,UAAUqB,eAAenB,KAAKiB,EAAK6B,4CCK9EC,EAAY,KACZC,EAAS,KACTC,EAAgBzF,SAASC,gBAAgByF,UAC7C,MAAMC,EAAmB,GA8EzB,SAASC,IACP,MAAMC,EAAeC,aAAaC,QAAQ,UAAY,OAZxD,IAAkBC,EACH,WADGA,EAaItI,OAAOuI,WAAW,gCAAgCC,QAI/C,SAAjBL,EACO,QACgB,SAAhBA,EACA,OAEA,OAIU,SAAjBA,EACO,OACgB,QAAhBA,EACA,QAEA,SA9BoB,SAATG,GAA4B,SAATA,IACzCG,QAAQC,MAAM,2BAA2BJ,yBACzCA,EAAO,QAGThG,SAASS,KAAK4F,QAAQC,MAAQN,EAC9BF,aAAaS,QAAQ,QAASP,GAC9BG,QAAQK,IAAI,cAAcR,UA0B5B,CAkDA,SAASnC,KART,WAEE,MAAM4C,EAAUzG,SAAS0G,uBAAuB,gBAChDrE,MAAMsE,KAAKF,GAASlE,SAASqE,IAC3BA,EAAI9C,iBAAiB,QAAS8B,EAAe,GAEjD,CAGEiB,GA9CF,WAEE,IAAIC,EAA6B,EAC7BC,GAAU,EAEdrJ,OAAOoG,iBAAiB,UAAU,SAAUuB,GAC1CyB,EAA6BpJ,OAAOsJ,QAE/BD,IACHrJ,OAAOwF,uBAAsB,WAzDnC,IAAuB+D,GAxDvB,SAAgCA,GAC9B,MAAMC,EAAY7G,KAAK8G,MAAM3B,EAAO7F,wBAAwBQ,KAE5DgG,QAAQK,IAAI,cAAcU,KACT,GAAbA,GAAkBD,GAAaC,EACjC1B,EAAOjE,UAAUM,IAAI,YAErB2D,EAAOjE,UAAUC,OAAO,WAE5B,EAgDE4F,CADqBH,EA0DDH,GAvGtB,SAAmCG,GAC7BA,EAAYtB,EACd3F,SAASC,gBAAgBsB,UAAUC,OAAO,oBAEtCyF,EAAYxB,EACdzF,SAASC,gBAAgBsB,UAAUM,IAAI,oBAC9BoF,EAAYxB,GACrBzF,SAASC,gBAAgBsB,UAAUC,OAAO,oBAG9CiE,EAAgBwB,CAClB,CAoCEI,CAA0BJ,GAlC5B,SAA6BA,GACT,OAAd1B,IAKa,GAAb0B,EACF1B,EAAU+B,SAAS,EAAG,GAGtBjH,KAAKC,KAAK2G,IACV5G,KAAK8G,MAAMnH,SAASC,gBAAgBS,aAAehD,OAAOqC,aAE1DwF,EAAU+B,SAAS,EAAG/B,EAAU7E,cAGhBV,SAASuH,cAAc,mBAc3C,CAKEC,CAAoBP,GAwDdF,GAAU,CACZ,IAEAA,GAAU,EAEd,IACArJ,OAAO+J,QACT,CA6BEC,GA1BkB,OAAdnC,GAKJ,IAAI,IAAJ,CAAY,cAAe,CACzBrH,QAAQ,EACRyJ,WAAW,EACX9J,SAAU,iBACVI,OAAQ,KACN,IAAI2J,EAAMhI,WAAWiI,iBAAiB7H,SAASC,iBAAiB6H,UAChE,OAAOtC,EAAO7F,wBAAwBoI,OAAS,IAAMH,EAAM,CAAC,GAiBlE,CAcA5H,SAAS8D,iBAAiB,oBAT1B,WACE9D,SAASS,KAAKW,WAAWG,UAAUC,OAAO,SAE1CgE,EAASxF,SAASuH,cAAc,UAChChC,EAAYvF,SAASuH,cAAc,eAEnC1D,GACF","sources":["webpack:///./src/furo/assets/scripts/gumshoe-patched.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///./src/furo/assets/scripts/furo.js"],"sourcesContent":["/*!\n * gumshoejs v5.1.2 (patched by @pradyunsg)\n * A simple, framework-agnostic scrollspy script.\n * (c) 2019 Chris Ferdinandi\n * MIT License\n * http://github.com/cferdinandi/gumshoe\n */\n\n(function (root, factory) {\n if (typeof define === \"function\" && define.amd) {\n define([], function () {\n return factory(root);\n });\n } else if (typeof exports === \"object\") {\n module.exports = factory(root);\n } else {\n root.Gumshoe = factory(root);\n }\n})(\n typeof global !== \"undefined\"\n ? global\n : typeof window !== \"undefined\"\n ? window\n : this,\n function (window) {\n \"use strict\";\n\n //\n // Defaults\n //\n\n var defaults = {\n // Active classes\n navClass: \"active\",\n contentClass: \"active\",\n\n // Nested navigation\n nested: false,\n nestedClass: \"active\",\n\n // Offset & reflow\n offset: 0,\n reflow: false,\n\n // Event support\n events: true,\n };\n\n //\n // Methods\n //\n\n /**\n * Merge two or more objects together.\n * @param {Object} objects The objects to merge together\n * @returns {Object} Merged values of defaults and options\n */\n var extend = function () {\n var merged = {};\n Array.prototype.forEach.call(arguments, function (obj) {\n for (var key in obj) {\n if (!obj.hasOwnProperty(key)) return;\n merged[key] = obj[key];\n }\n });\n return merged;\n };\n\n /**\n * Emit a custom event\n * @param {String} type The event type\n * @param {Node} elem The element to attach the event to\n * @param {Object} detail Any details to pass along with the event\n */\n var emitEvent = function (type, elem, detail) {\n // Make sure events are enabled\n if (!detail.settings.events) return;\n\n // Create a new event\n var event = new CustomEvent(type, {\n bubbles: true,\n cancelable: true,\n detail: detail,\n });\n\n // Dispatch the event\n elem.dispatchEvent(event);\n };\n\n /**\n * Get an element's distance from the top of the Document.\n * @param {Node} elem The element\n * @return {Number} Distance from the top in pixels\n */\n var getOffsetTop = function (elem) {\n var location = 0;\n if (elem.offsetParent) {\n while (elem) {\n location += elem.offsetTop;\n elem = elem.offsetParent;\n }\n }\n return location >= 0 ? location : 0;\n };\n\n /**\n * Sort content from first to last in the DOM\n * @param {Array} contents The content areas\n */\n var sortContents = function (contents) {\n if (contents) {\n contents.sort(function (item1, item2) {\n var offset1 = getOffsetTop(item1.content);\n var offset2 = getOffsetTop(item2.content);\n if (offset1 < offset2) return -1;\n return 1;\n });\n }\n };\n\n /**\n * Get the offset to use for calculating position\n * @param {Object} settings The settings for this instantiation\n * @return {Float} The number of pixels to offset the calculations\n */\n var getOffset = function (settings) {\n // if the offset is a function run it\n if (typeof settings.offset === \"function\") {\n return parseFloat(settings.offset());\n }\n\n // Otherwise, return it as-is\n return parseFloat(settings.offset);\n };\n\n /**\n * Get the document element's height\n * @private\n * @returns {Number}\n */\n var getDocumentHeight = function () {\n return Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight,\n document.body.offsetHeight,\n document.documentElement.offsetHeight,\n document.body.clientHeight,\n document.documentElement.clientHeight,\n );\n };\n\n /**\n * Determine if an element is in view\n * @param {Node} elem The element\n * @param {Object} settings The settings for this instantiation\n * @param {Boolean} bottom If true, check if element is above bottom of viewport instead\n * @return {Boolean} Returns true if element is in the viewport\n */\n var isInView = function (elem, settings, bottom) {\n var bounds = elem.getBoundingClientRect();\n var offset = getOffset(settings);\n if (bottom) {\n return (\n parseInt(bounds.bottom, 10) <\n (window.innerHeight || document.documentElement.clientHeight)\n );\n }\n return parseInt(bounds.top, 10) <= offset;\n };\n\n /**\n * Check if at the bottom of the viewport\n * @return {Boolean} If true, page is at the bottom of the viewport\n */\n var isAtBottom = function () {\n if (\n Math.ceil(window.innerHeight + window.pageYOffset) >=\n getDocumentHeight()\n )\n return true;\n return false;\n };\n\n /**\n * Check if the last item should be used (even if not at the top of the page)\n * @param {Object} item The last item\n * @param {Object} settings The settings for this instantiation\n * @return {Boolean} If true, use the last item\n */\n var useLastItem = function (item, settings) {\n if (isAtBottom() && isInView(item.content, settings, true)) return true;\n return false;\n };\n\n /**\n * Get the active content\n * @param {Array} contents The content areas\n * @param {Object} settings The settings for this instantiation\n * @return {Object} The content area and matching navigation link\n */\n var getActive = function (contents, settings) {\n var last = contents[contents.length - 1];\n if (useLastItem(last, settings)) return last;\n for (var i = contents.length - 1; i >= 0; i--) {\n if (isInView(contents[i].content, settings)) return contents[i];\n }\n };\n\n /**\n * Deactivate parent navs in a nested navigation\n * @param {Node} nav The starting navigation element\n * @param {Object} settings The settings for this instantiation\n */\n var deactivateNested = function (nav, settings) {\n // If nesting isn't activated, bail\n if (!settings.nested || !nav.parentNode) return;\n\n // Get the parent navigation\n var li = nav.parentNode.closest(\"li\");\n if (!li) return;\n\n // Remove the active class\n li.classList.remove(settings.nestedClass);\n\n // Apply recursively to any parent navigation elements\n deactivateNested(li, settings);\n };\n\n /**\n * Deactivate a nav and content area\n * @param {Object} items The nav item and content to deactivate\n * @param {Object} settings The settings for this instantiation\n */\n var deactivate = function (items, settings) {\n // Make sure there are items to deactivate\n if (!items) return;\n\n // Get the parent list item\n var li = items.nav.closest(\"li\");\n if (!li) return;\n\n // Remove the active class from the nav and content\n li.classList.remove(settings.navClass);\n items.content.classList.remove(settings.contentClass);\n\n // Deactivate any parent navs in a nested navigation\n deactivateNested(li, settings);\n\n // Emit a custom event\n emitEvent(\"gumshoeDeactivate\", li, {\n link: items.nav,\n content: items.content,\n settings: settings,\n });\n };\n\n /**\n * Activate parent navs in a nested navigation\n * @param {Node} nav The starting navigation element\n * @param {Object} settings The settings for this instantiation\n */\n var activateNested = function (nav, settings) {\n // If nesting isn't activated, bail\n if (!settings.nested) return;\n\n // Get the parent navigation\n var li = nav.parentNode.closest(\"li\");\n if (!li) return;\n\n // Add the active class\n li.classList.add(settings.nestedClass);\n\n // Apply recursively to any parent navigation elements\n activateNested(li, settings);\n };\n\n /**\n * Activate a nav and content area\n * @param {Object} items The nav item and content to activate\n * @param {Object} settings The settings for this instantiation\n */\n var activate = function (items, settings) {\n // Make sure there are items to activate\n if (!items) return;\n\n // Get the parent list item\n var li = items.nav.closest(\"li\");\n if (!li) return;\n\n // Add the active class to the nav and content\n li.classList.add(settings.navClass);\n items.content.classList.add(settings.contentClass);\n\n // Activate any parent navs in a nested navigation\n activateNested(li, settings);\n\n // Emit a custom event\n emitEvent(\"gumshoeActivate\", li, {\n link: items.nav,\n content: items.content,\n settings: settings,\n });\n };\n\n /**\n * Create the Constructor object\n * @param {String} selector The selector to use for navigation items\n * @param {Object} options User options and settings\n */\n var Constructor = function (selector, options) {\n //\n // Variables\n //\n\n var publicAPIs = {};\n var navItems, contents, current, timeout, settings;\n\n //\n // Methods\n //\n\n /**\n * Set variables from DOM elements\n */\n publicAPIs.setup = function () {\n // Get all nav items\n navItems = document.querySelectorAll(selector);\n\n // Create contents array\n contents = [];\n\n // Loop through each item, get it's matching content, and push to the array\n Array.prototype.forEach.call(navItems, function (item) {\n // Get the content for the nav item\n var content = document.getElementById(\n decodeURIComponent(item.hash.substr(1)),\n );\n if (!content) return;\n\n // Push to the contents array\n contents.push({\n nav: item,\n content: content,\n });\n });\n\n // Sort contents by the order they appear in the DOM\n sortContents(contents);\n };\n\n /**\n * Detect which content is currently active\n */\n publicAPIs.detect = function () {\n // Get the active content\n var active = getActive(contents, settings);\n\n // if there's no active content, deactivate and bail\n if (!active) {\n if (current) {\n deactivate(current, settings);\n current = null;\n }\n return;\n }\n\n // If the active content is the one currently active, do nothing\n if (current && active.content === current.content) return;\n\n // Deactivate the current content and activate the new content\n deactivate(current, settings);\n activate(active, settings);\n\n // Update the currently active content\n current = active;\n };\n\n /**\n * Detect the active content on scroll\n * Debounced for performance\n */\n var scrollHandler = function (event) {\n // If there's a timer, cancel it\n if (timeout) {\n window.cancelAnimationFrame(timeout);\n }\n\n // Setup debounce callback\n timeout = window.requestAnimationFrame(publicAPIs.detect);\n };\n\n /**\n * Update content sorting on resize\n * Debounced for performance\n */\n var resizeHandler = function (event) {\n // If there's a timer, cancel it\n if (timeout) {\n window.cancelAnimationFrame(timeout);\n }\n\n // Setup debounce callback\n timeout = window.requestAnimationFrame(function () {\n sortContents(contents);\n publicAPIs.detect();\n });\n };\n\n /**\n * Destroy the current instantiation\n */\n publicAPIs.destroy = function () {\n // Undo DOM changes\n if (current) {\n deactivate(current, settings);\n }\n\n // Remove event listeners\n window.removeEventListener(\"scroll\", scrollHandler, false);\n if (settings.reflow) {\n window.removeEventListener(\"resize\", resizeHandler, false);\n }\n\n // Reset variables\n contents = null;\n navItems = null;\n current = null;\n timeout = null;\n settings = null;\n };\n\n /**\n * Initialize the current instantiation\n */\n var init = function () {\n // Merge user options into defaults\n settings = extend(defaults, options || {});\n\n // Setup variables based on the current DOM\n publicAPIs.setup();\n\n // Find the currently active content\n publicAPIs.detect();\n\n // Setup event listeners\n window.addEventListener(\"scroll\", scrollHandler, false);\n if (settings.reflow) {\n window.addEventListener(\"resize\", resizeHandler, false);\n }\n };\n\n //\n // Initialize and return the public APIs\n //\n\n init();\n return publicAPIs;\n };\n\n //\n // Return the Constructor\n //\n\n return Constructor;\n },\n);\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","import Gumshoe from \"./gumshoe-patched.js\";\n\n////////////////////////////////////////////////////////////////////////////////\n// Scroll Handling\n////////////////////////////////////////////////////////////////////////////////\nvar tocScroll = null;\nvar header = null;\nvar lastScrollTop = document.documentElement.scrollTop;\nconst GO_TO_TOP_OFFSET = 64;\n\nfunction scrollHandlerForHeader(positionY) {\n const headerTop = Math.floor(header.getBoundingClientRect().top);\n\n console.log(`headerTop: ${headerTop}`);\n if (headerTop == 0 && positionY != headerTop) {\n header.classList.add(\"scrolled\");\n } else {\n header.classList.remove(\"scrolled\");\n }\n}\n\nfunction scrollHandlerForBackToTop(positionY) {\n if (positionY < GO_TO_TOP_OFFSET) {\n document.documentElement.classList.remove(\"show-back-to-top\");\n } else {\n if (positionY < lastScrollTop) {\n document.documentElement.classList.add(\"show-back-to-top\");\n } else if (positionY > lastScrollTop) {\n document.documentElement.classList.remove(\"show-back-to-top\");\n }\n }\n lastScrollTop = positionY;\n}\n\nfunction scrollHandlerForTOC(positionY) {\n if (tocScroll === null) {\n return;\n }\n\n // top of page.\n if (positionY == 0) {\n tocScroll.scrollTo(0, 0);\n } else if (\n // bottom of page.\n Math.ceil(positionY) >=\n Math.floor(document.documentElement.scrollHeight - window.innerHeight)\n ) {\n tocScroll.scrollTo(0, tocScroll.scrollHeight);\n } else {\n // somewhere in the middle.\n const current = document.querySelector(\".scroll-current\");\n if (current == null) {\n return;\n }\n\n // https://github.com/pypa/pip/issues/9159 This breaks scroll behaviours.\n // // scroll the currently \"active\" heading in toc, into view.\n // const rect = current.getBoundingClientRect();\n // if (0 > rect.top) {\n // current.scrollIntoView(true); // the argument is \"alignTop\"\n // } else if (rect.bottom > window.innerHeight) {\n // current.scrollIntoView(false);\n // }\n }\n}\n\nfunction scrollHandler(positionY) {\n scrollHandlerForHeader(positionY);\n scrollHandlerForBackToTop(positionY);\n scrollHandlerForTOC(positionY);\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Theme Toggle\n////////////////////////////////////////////////////////////////////////////////\nfunction setTheme(mode) {\n if (mode !== \"light\" && mode !== \"dark\" && mode !== \"auto\") {\n console.error(`Got invalid theme mode: ${mode}. Resetting to auto.`);\n mode = \"auto\";\n }\n\n document.body.dataset.theme = mode;\n localStorage.setItem(\"theme\", mode);\n console.log(`Changed to ${mode} mode.`);\n}\n\nfunction cycleThemeOnce() {\n const currentTheme = localStorage.getItem(\"theme\") || \"auto\";\n const prefersDark = window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\n\n if (prefersDark) {\n // Auto (dark) -> Light -> Dark\n if (currentTheme === \"auto\") {\n setTheme(\"light\");\n } else if (currentTheme == \"light\") {\n setTheme(\"dark\");\n } else {\n setTheme(\"auto\");\n }\n } else {\n // Auto (light) -> Dark -> Light\n if (currentTheme === \"auto\") {\n setTheme(\"dark\");\n } else if (currentTheme == \"dark\") {\n setTheme(\"light\");\n } else {\n setTheme(\"auto\");\n }\n }\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Setup\n////////////////////////////////////////////////////////////////////////////////\nfunction setupScrollHandler() {\n // Taken from https://developer.mozilla.org/en-US/docs/Web/API/Document/scroll_event\n let last_known_scroll_position = 0;\n let ticking = false;\n\n window.addEventListener(\"scroll\", function (e) {\n last_known_scroll_position = window.scrollY;\n\n if (!ticking) {\n window.requestAnimationFrame(function () {\n scrollHandler(last_known_scroll_position);\n ticking = false;\n });\n\n ticking = true;\n }\n });\n window.scroll();\n}\n\nfunction setupScrollSpy() {\n if (tocScroll === null) {\n return;\n }\n\n // Scrollspy -- highlight table on contents, based on scroll\n new Gumshoe(\".toc-tree a\", {\n reflow: true,\n recursive: true,\n navClass: \"scroll-current\",\n offset: () => {\n let rem = parseFloat(getComputedStyle(document.documentElement).fontSize);\n return header.getBoundingClientRect().height + 2.5 * rem + 1;\n },\n });\n}\n\nfunction setupTheme() {\n // Attach event handlers for toggling themes\n const buttons = document.getElementsByClassName(\"theme-toggle\");\n Array.from(buttons).forEach((btn) => {\n btn.addEventListener(\"click\", cycleThemeOnce);\n });\n}\n\nfunction setup() {\n setupTheme();\n setupScrollHandler();\n setupScrollSpy();\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Main entrypoint\n////////////////////////////////////////////////////////////////////////////////\nfunction main() {\n document.body.parentNode.classList.remove(\"no-js\");\n\n header = document.querySelector(\"header\");\n tocScroll = document.querySelector(\".toc-scroll\");\n\n setup();\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", main);\n"],"names":["root","g","window","this","defaults","navClass","contentClass","nested","nestedClass","offset","reflow","events","emitEvent","type","elem","detail","settings","event","CustomEvent","bubbles","cancelable","dispatchEvent","getOffsetTop","location","offsetParent","offsetTop","sortContents","contents","sort","item1","item2","content","isInView","bottom","bounds","getBoundingClientRect","parseFloat","getOffset","parseInt","innerHeight","document","documentElement","clientHeight","top","isAtBottom","Math","ceil","pageYOffset","max","body","scrollHeight","offsetHeight","getActive","last","length","item","useLastItem","i","deactivateNested","nav","parentNode","li","closest","classList","remove","deactivate","items","link","activateNested","add","selector","options","navItems","current","timeout","publicAPIs","querySelectorAll","Array","prototype","forEach","call","getElementById","decodeURIComponent","hash","substr","push","active","activate","scrollHandler","cancelAnimationFrame","requestAnimationFrame","detect","resizeHandler","destroy","removeEventListener","merged","arguments","obj","key","hasOwnProperty","extend","setup","addEventListener","factory","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","n","getter","__esModule","d","a","definition","o","Object","defineProperty","enumerable","get","globalThis","Function","e","prop","tocScroll","header","lastScrollTop","scrollTop","GO_TO_TOP_OFFSET","cycleThemeOnce","currentTheme","localStorage","getItem","mode","matchMedia","matches","console","error","dataset","theme","setItem","log","buttons","getElementsByClassName","from","btn","setupTheme","last_known_scroll_position","ticking","scrollY","positionY","headerTop","floor","scrollHandlerForHeader","scrollHandlerForBackToTop","scrollTo","querySelector","scrollHandlerForTOC","scroll","setupScrollHandler","recursive","rem","getComputedStyle","fontSize","height"],"sourceRoot":""} \ No newline at end of file diff --git a/pulls/1961/_static/searchtools.js b/pulls/1961/_static/searchtools.js deleted file mode 100644 index 97d56a74d8..0000000000 --- a/pulls/1961/_static/searchtools.js +++ /dev/null @@ -1,566 +0,0 @@ -/* - * searchtools.js - * ~~~~~~~~~~~~~~~~ - * - * Sphinx JavaScript utilities for the full-text search. - * - * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * - */ -"use strict"; - -/** - * Simple result scoring code. - */ -if (typeof Scorer === "undefined") { - var Scorer = { - // Implement the following function to further tweak the score for each result - // The function takes a result array [docname, title, anchor, descr, score, filename] - // and returns the new score. - /* - score: result => { - const [docname, title, anchor, descr, score, filename] = result - return score - }, - */ - - // query matches the full name of an object - objNameMatch: 11, - // or matches in the last dotted part of the object name - objPartialMatch: 6, - // Additive scores depending on the priority of the object - objPrio: { - 0: 15, // used to be importantResults - 1: 5, // used to be objectResults - 2: -5, // used to be unimportantResults - }, - // Used when the priority is not in the mapping. - objPrioDefault: 0, - - // query found in title - title: 15, - partialTitle: 7, - // query found in terms - term: 5, - partialTerm: 2, - }; -} - -const _removeChildren = (element) => { - while (element && element.lastChild) element.removeChild(element.lastChild); -}; - -/** - * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping - */ -const _escapeRegExp = (string) => - string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string - -const _displayItem = (item, searchTerms) => { - const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; - const docUrlRoot = DOCUMENTATION_OPTIONS.URL_ROOT; - const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; - const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; - const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; - - const [docName, title, anchor, descr, score, _filename] = item; - - let listItem = document.createElement("li"); - let requestUrl; - let linkUrl; - if (docBuilder === "dirhtml") { - // dirhtml builder - let dirname = docName + "/"; - if (dirname.match(/\/index\/$/)) - dirname = dirname.substring(0, dirname.length - 6); - else if (dirname === "index/") dirname = ""; - requestUrl = docUrlRoot + dirname; - linkUrl = requestUrl; - } else { - // normal html builders - requestUrl = docUrlRoot + docName + docFileSuffix; - linkUrl = docName + docLinkSuffix; - } - let linkEl = listItem.appendChild(document.createElement("a")); - linkEl.href = linkUrl + anchor; - linkEl.dataset.score = score; - linkEl.innerHTML = title; - if (descr) - listItem.appendChild(document.createElement("span")).innerHTML = - " (" + descr + ")"; - else if (showSearchSummary) - fetch(requestUrl) - .then((responseData) => responseData.text()) - .then((data) => { - if (data) - listItem.appendChild( - Search.makeSearchSummary(data, searchTerms) - ); - }); - Search.output.appendChild(listItem); -}; -const _finishSearch = (resultCount) => { - Search.stopPulse(); - Search.title.innerText = _("Search Results"); - if (!resultCount) - Search.status.innerText = Documentation.gettext( - "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories." - ); - else - Search.status.innerText = _( - `Search finished, found ${resultCount} page(s) matching the search query.` - ); -}; -const _displayNextItem = ( - results, - resultCount, - searchTerms -) => { - // results left, load the summary and display it - // this is intended to be dynamic (don't sub resultsCount) - if (results.length) { - _displayItem(results.pop(), searchTerms); - setTimeout( - () => _displayNextItem(results, resultCount, searchTerms), - 5 - ); - } - // search finished, update title and status message - else _finishSearch(resultCount); -}; - -/** - * Default splitQuery function. Can be overridden in ``sphinx.search`` with a - * custom function per language. - * - * The regular expression works by splitting the string on consecutive characters - * that are not Unicode letters, numbers, underscores, or emoji characters. - * This is the same as ``\W+`` in Python, preserving the surrogate pair area. - */ -if (typeof splitQuery === "undefined") { - var splitQuery = (query) => query - .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu) - .filter(term => term) // remove remaining empty strings -} - -/** - * Search Module - */ -const Search = { - _index: null, - _queued_query: null, - _pulse_status: -1, - - htmlToText: (htmlString) => { - const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); - htmlElement.querySelectorAll(".headerlink").forEach((el) => { el.remove() }); - const docContent = htmlElement.querySelector('[role="main"]'); - if (docContent !== undefined) return docContent.textContent; - console.warn( - "Content block not found. Sphinx search tries to obtain it via '[role=main]'. Could you check your theme or template." - ); - return ""; - }, - - init: () => { - const query = new URLSearchParams(window.location.search).get("q"); - document - .querySelectorAll('input[name="q"]') - .forEach((el) => (el.value = query)); - if (query) Search.performSearch(query); - }, - - loadIndex: (url) => - (document.body.appendChild(document.createElement("script")).src = url), - - setIndex: (index) => { - Search._index = index; - if (Search._queued_query !== null) { - const query = Search._queued_query; - Search._queued_query = null; - Search.query(query); - } - }, - - hasIndex: () => Search._index !== null, - - deferQuery: (query) => (Search._queued_query = query), - - stopPulse: () => (Search._pulse_status = -1), - - startPulse: () => { - if (Search._pulse_status >= 0) return; - - const pulse = () => { - Search._pulse_status = (Search._pulse_status + 1) % 4; - Search.dots.innerText = ".".repeat(Search._pulse_status); - if (Search._pulse_status >= 0) window.setTimeout(pulse, 500); - }; - pulse(); - }, - - /** - * perform a search for something (or wait until index is loaded) - */ - performSearch: (query) => { - // create the required interface elements - const searchText = document.createElement("h2"); - searchText.textContent = _("Searching"); - const searchSummary = document.createElement("p"); - searchSummary.classList.add("search-summary"); - searchSummary.innerText = ""; - const searchList = document.createElement("ul"); - searchList.classList.add("search"); - - const out = document.getElementById("search-results"); - Search.title = out.appendChild(searchText); - Search.dots = Search.title.appendChild(document.createElement("span")); - Search.status = out.appendChild(searchSummary); - Search.output = out.appendChild(searchList); - - const searchProgress = document.getElementById("search-progress"); - // Some themes don't use the search progress node - if (searchProgress) { - searchProgress.innerText = _("Preparing search..."); - } - Search.startPulse(); - - // index already loaded, the browser was quick! - if (Search.hasIndex()) Search.query(query); - else Search.deferQuery(query); - }, - - /** - * execute search (requires search index to be loaded) - */ - query: (query) => { - const filenames = Search._index.filenames; - const docNames = Search._index.docnames; - const titles = Search._index.titles; - const allTitles = Search._index.alltitles; - const indexEntries = Search._index.indexentries; - - // stem the search terms and add them to the correct list - const stemmer = new Stemmer(); - const searchTerms = new Set(); - const excludedTerms = new Set(); - const highlightTerms = new Set(); - const objectTerms = new Set(splitQuery(query.toLowerCase().trim())); - splitQuery(query.trim()).forEach((queryTerm) => { - const queryTermLower = queryTerm.toLowerCase(); - - // maybe skip this "word" - // stopwords array is from language_data.js - if ( - stopwords.indexOf(queryTermLower) !== -1 || - queryTerm.match(/^\d+$/) - ) - return; - - // stem the word - let word = stemmer.stemWord(queryTermLower); - // select the correct list - if (word[0] === "-") excludedTerms.add(word.substr(1)); - else { - searchTerms.add(word); - highlightTerms.add(queryTermLower); - } - }); - - if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js - localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" ")) - } - - // console.debug("SEARCH: searching for:"); - // console.info("required: ", [...searchTerms]); - // console.info("excluded: ", [...excludedTerms]); - - // array of [docname, title, anchor, descr, score, filename] - let results = []; - _removeChildren(document.getElementById("search-progress")); - - const queryLower = query.toLowerCase(); - for (const [title, foundTitles] of Object.entries(allTitles)) { - if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) { - for (const [file, id] of foundTitles) { - let score = Math.round(100 * queryLower.length / title.length) - results.push([ - docNames[file], - titles[file] !== title ? `${titles[file]} > ${title}` : title, - id !== null ? "#" + id : "", - null, - score, - filenames[file], - ]); - } - } - } - - // search for explicit entries in index directives - for (const [entry, foundEntries] of Object.entries(indexEntries)) { - if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { - for (const [file, id] of foundEntries) { - let score = Math.round(100 * queryLower.length / entry.length) - results.push([ - docNames[file], - titles[file], - id ? "#" + id : "", - null, - score, - filenames[file], - ]); - } - } - } - - // lookup as object - objectTerms.forEach((term) => - results.push(...Search.performObjectSearch(term, objectTerms)) - ); - - // lookup as search terms in fulltext - results.push(...Search.performTermsSearch(searchTerms, excludedTerms)); - - // let the scorer override scores with a custom scoring function - if (Scorer.score) results.forEach((item) => (item[4] = Scorer.score(item))); - - // now sort the results by score (in opposite order of appearance, since the - // display function below uses pop() to retrieve items) and then - // alphabetically - results.sort((a, b) => { - const leftScore = a[4]; - const rightScore = b[4]; - if (leftScore === rightScore) { - // same score: sort alphabetically - const leftTitle = a[1].toLowerCase(); - const rightTitle = b[1].toLowerCase(); - if (leftTitle === rightTitle) return 0; - return leftTitle > rightTitle ? -1 : 1; // inverted is intentional - } - return leftScore > rightScore ? 1 : -1; - }); - - // remove duplicate search results - // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept - let seen = new Set(); - results = results.reverse().reduce((acc, result) => { - let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(','); - if (!seen.has(resultStr)) { - acc.push(result); - seen.add(resultStr); - } - return acc; - }, []); - - results = results.reverse(); - - // for debugging - //Search.lastresults = results.slice(); // a copy - // console.info("search results:", Search.lastresults); - - // print the results - _displayNextItem(results, results.length, searchTerms); - }, - - /** - * search for object names - */ - performObjectSearch: (object, objectTerms) => { - const filenames = Search._index.filenames; - const docNames = Search._index.docnames; - const objects = Search._index.objects; - const objNames = Search._index.objnames; - const titles = Search._index.titles; - - const results = []; - - const objectSearchCallback = (prefix, match) => { - const name = match[4] - const fullname = (prefix ? prefix + "." : "") + name; - const fullnameLower = fullname.toLowerCase(); - if (fullnameLower.indexOf(object) < 0) return; - - let score = 0; - const parts = fullnameLower.split("."); - - // check for different match types: exact matches of full name or - // "last name" (i.e. last dotted part) - if (fullnameLower === object || parts.slice(-1)[0] === object) - score += Scorer.objNameMatch; - else if (parts.slice(-1)[0].indexOf(object) > -1) - score += Scorer.objPartialMatch; // matches in last name - - const objName = objNames[match[1]][2]; - const title = titles[match[0]]; - - // If more than one term searched for, we require other words to be - // found in the name/title/description - const otherTerms = new Set(objectTerms); - otherTerms.delete(object); - if (otherTerms.size > 0) { - const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase(); - if ( - [...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0) - ) - return; - } - - let anchor = match[3]; - if (anchor === "") anchor = fullname; - else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname; - - const descr = objName + _(", in ") + title; - - // add custom score for some objects according to scorer - if (Scorer.objPrio.hasOwnProperty(match[2])) - score += Scorer.objPrio[match[2]]; - else score += Scorer.objPrioDefault; - - results.push([ - docNames[match[0]], - fullname, - "#" + anchor, - descr, - score, - filenames[match[0]], - ]); - }; - Object.keys(objects).forEach((prefix) => - objects[prefix].forEach((array) => - objectSearchCallback(prefix, array) - ) - ); - return results; - }, - - /** - * search for full-text terms in the index - */ - performTermsSearch: (searchTerms, excludedTerms) => { - // prepare search - const terms = Search._index.terms; - const titleTerms = Search._index.titleterms; - const filenames = Search._index.filenames; - const docNames = Search._index.docnames; - const titles = Search._index.titles; - - const scoreMap = new Map(); - const fileMap = new Map(); - - // perform the search on the required terms - searchTerms.forEach((word) => { - const files = []; - const arr = [ - { files: terms[word], score: Scorer.term }, - { files: titleTerms[word], score: Scorer.title }, - ]; - // add support for partial matches - if (word.length > 2) { - const escapedWord = _escapeRegExp(word); - Object.keys(terms).forEach((term) => { - if (term.match(escapedWord) && !terms[word]) - arr.push({ files: terms[term], score: Scorer.partialTerm }); - }); - Object.keys(titleTerms).forEach((term) => { - if (term.match(escapedWord) && !titleTerms[word]) - arr.push({ files: titleTerms[word], score: Scorer.partialTitle }); - }); - } - - // no match but word was a required one - if (arr.every((record) => record.files === undefined)) return; - - // found search word in contents - arr.forEach((record) => { - if (record.files === undefined) return; - - let recordFiles = record.files; - if (recordFiles.length === undefined) recordFiles = [recordFiles]; - files.push(...recordFiles); - - // set score for the word in each file - recordFiles.forEach((file) => { - if (!scoreMap.has(file)) scoreMap.set(file, {}); - scoreMap.get(file)[word] = record.score; - }); - }); - - // create the mapping - files.forEach((file) => { - if (fileMap.has(file) && fileMap.get(file).indexOf(word) === -1) - fileMap.get(file).push(word); - else fileMap.set(file, [word]); - }); - }); - - // now check if the files don't contain excluded terms - const results = []; - for (const [file, wordList] of fileMap) { - // check if all requirements are matched - - // as search terms with length < 3 are discarded - const filteredTermCount = [...searchTerms].filter( - (term) => term.length > 2 - ).length; - if ( - wordList.length !== searchTerms.size && - wordList.length !== filteredTermCount - ) - continue; - - // ensure that none of the excluded terms is in the search result - if ( - [...excludedTerms].some( - (term) => - terms[term] === file || - titleTerms[term] === file || - (terms[term] || []).includes(file) || - (titleTerms[term] || []).includes(file) - ) - ) - break; - - // select one (max) score for the file. - const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w])); - // add result to the result list - results.push([ - docNames[file], - titles[file], - "", - null, - score, - filenames[file], - ]); - } - return results; - }, - - /** - * helper function to return a node containing the - * search summary for a given text. keywords is a list - * of stemmed words. - */ - makeSearchSummary: (htmlText, keywords) => { - const text = Search.htmlToText(htmlText); - if (text === "") return null; - - const textLower = text.toLowerCase(); - const actualStartPosition = [...keywords] - .map((k) => textLower.indexOf(k.toLowerCase())) - .filter((i) => i > -1) - .slice(-1)[0]; - const startWithContext = Math.max(actualStartPosition - 120, 0); - - const top = startWithContext === 0 ? "" : "..."; - const tail = startWithContext + 240 < text.length ? "..." : ""; - - let summary = document.createElement("p"); - summary.classList.add("context"); - summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; - - return summary; - }, -}; - -_ready(Search.init); diff --git a/pulls/1961/_static/skeleton.css b/pulls/1961/_static/skeleton.css deleted file mode 100644 index 467c878c62..0000000000 --- a/pulls/1961/_static/skeleton.css +++ /dev/null @@ -1,296 +0,0 @@ -/* Some sane resets. */ -html { - height: 100%; -} - -body { - margin: 0; - min-height: 100%; -} - -/* All the flexbox magic! */ -body, -.sb-announcement, -.sb-content, -.sb-main, -.sb-container, -.sb-container__inner, -.sb-article-container, -.sb-footer-content, -.sb-header, -.sb-header-secondary, -.sb-footer { - display: flex; -} - -/* These order things vertically */ -body, -.sb-main, -.sb-article-container { - flex-direction: column; -} - -/* Put elements in the center */ -.sb-header, -.sb-header-secondary, -.sb-container, -.sb-content, -.sb-footer, -.sb-footer-content { - justify-content: center; -} -/* Put elements at the ends */ -.sb-article-container { - justify-content: space-between; -} - -/* These elements grow. */ -.sb-main, -.sb-content, -.sb-container, -article { - flex-grow: 1; -} - -/* Because padding making this wider is not fun */ -article { - box-sizing: border-box; -} - -/* The announcements element should never be wider than the page. */ -.sb-announcement { - max-width: 100%; -} - -.sb-sidebar-primary, -.sb-sidebar-secondary { - flex-shrink: 0; - width: 17rem; -} - -.sb-announcement__inner { - justify-content: center; - - box-sizing: border-box; - height: 3rem; - - overflow-x: auto; - white-space: nowrap; -} - -/* Sidebars, with checkbox-based toggle */ -.sb-sidebar-primary, -.sb-sidebar-secondary { - position: fixed; - height: 100%; - top: 0; -} - -.sb-sidebar-primary { - left: -17rem; - transition: left 250ms ease-in-out; -} -.sb-sidebar-secondary { - right: -17rem; - transition: right 250ms ease-in-out; -} - -.sb-sidebar-toggle { - display: none; -} -.sb-sidebar-overlay { - position: fixed; - top: 0; - width: 0; - height: 0; - - transition: width 0ms ease 250ms, height 0ms ease 250ms, opacity 250ms ease; - - opacity: 0; - background-color: rgba(0, 0, 0, 0.54); -} - -#sb-sidebar-toggle--primary:checked - ~ .sb-sidebar-overlay[for="sb-sidebar-toggle--primary"], -#sb-sidebar-toggle--secondary:checked - ~ .sb-sidebar-overlay[for="sb-sidebar-toggle--secondary"] { - width: 100%; - height: 100%; - opacity: 1; - transition: width 0ms ease, height 0ms ease, opacity 250ms ease; -} - -#sb-sidebar-toggle--primary:checked ~ .sb-container .sb-sidebar-primary { - left: 0; -} -#sb-sidebar-toggle--secondary:checked ~ .sb-container .sb-sidebar-secondary { - right: 0; -} - -/* Full-width mode */ -.drop-secondary-sidebar-for-full-width-content - .hide-when-secondary-sidebar-shown { - display: none !important; -} -.drop-secondary-sidebar-for-full-width-content .sb-sidebar-secondary { - display: none !important; -} - -/* Mobile views */ -.sb-page-width { - width: 100%; -} - -.sb-article-container, -.sb-footer-content__inner, -.drop-secondary-sidebar-for-full-width-content .sb-article, -.drop-secondary-sidebar-for-full-width-content .match-content-width { - width: 100vw; -} - -.sb-article, -.match-content-width { - padding: 0 1rem; - box-sizing: border-box; -} - -@media (min-width: 32rem) { - .sb-article, - .match-content-width { - padding: 0 2rem; - } -} - -/* Tablet views */ -@media (min-width: 42rem) { - .sb-article-container { - width: auto; - } - .sb-footer-content__inner, - .drop-secondary-sidebar-for-full-width-content .sb-article, - .drop-secondary-sidebar-for-full-width-content .match-content-width { - width: 42rem; - } - .sb-article, - .match-content-width { - width: 42rem; - } -} -@media (min-width: 46rem) { - .sb-footer-content__inner, - .drop-secondary-sidebar-for-full-width-content .sb-article, - .drop-secondary-sidebar-for-full-width-content .match-content-width { - width: 46rem; - } - .sb-article, - .match-content-width { - width: 46rem; - } -} -@media (min-width: 50rem) { - .sb-footer-content__inner, - .drop-secondary-sidebar-for-full-width-content .sb-article, - .drop-secondary-sidebar-for-full-width-content .match-content-width { - width: 50rem; - } - .sb-article, - .match-content-width { - width: 50rem; - } -} - -/* Tablet views */ -@media (min-width: 59rem) { - .sb-sidebar-secondary { - position: static; - } - .hide-when-secondary-sidebar-shown { - display: none !important; - } - .sb-footer-content__inner, - .drop-secondary-sidebar-for-full-width-content .sb-article, - .drop-secondary-sidebar-for-full-width-content .match-content-width { - width: 59rem; - } - .sb-article, - .match-content-width { - width: 42rem; - } -} -@media (min-width: 63rem) { - .sb-footer-content__inner, - .drop-secondary-sidebar-for-full-width-content .sb-article, - .drop-secondary-sidebar-for-full-width-content .match-content-width { - width: 63rem; - } - .sb-article, - .match-content-width { - width: 46rem; - } -} -@media (min-width: 67rem) { - .sb-footer-content__inner, - .drop-secondary-sidebar-for-full-width-content .sb-article, - .drop-secondary-sidebar-for-full-width-content .match-content-width { - width: 67rem; - } - .sb-article, - .match-content-width { - width: 50rem; - } -} - -/* Desktop views */ -@media (min-width: 76rem) { - .sb-sidebar-primary { - position: static; - } - .hide-when-primary-sidebar-shown { - display: none !important; - } - .sb-footer-content__inner, - .drop-secondary-sidebar-for-full-width-content .sb-article, - .drop-secondary-sidebar-for-full-width-content .match-content-width { - width: 59rem; - } - .sb-article, - .match-content-width { - width: 42rem; - } -} - -/* Full desktop views */ -@media (min-width: 80rem) { - .sb-article, - .match-content-width { - width: 46rem; - } - .sb-footer-content__inner, - .drop-secondary-sidebar-for-full-width-content .sb-article, - .drop-secondary-sidebar-for-full-width-content .match-content-width { - width: 63rem; - } -} - -@media (min-width: 84rem) { - .sb-article, - .match-content-width { - width: 50rem; - } - .sb-footer-content__inner, - .drop-secondary-sidebar-for-full-width-content .sb-article, - .drop-secondary-sidebar-for-full-width-content .match-content-width { - width: 67rem; - } -} - -@media (min-width: 88rem) { - .sb-footer-content__inner, - .drop-secondary-sidebar-for-full-width-content .sb-article, - .drop-secondary-sidebar-for-full-width-content .match-content-width { - width: 67rem; - } - .sb-page-width { - width: 88rem; - } -} diff --git a/pulls/1961/_static/sphinx-design.min.css b/pulls/1961/_static/sphinx-design.min.css deleted file mode 100644 index 860c36da0f..0000000000 --- a/pulls/1961/_static/sphinx-design.min.css +++ /dev/null @@ -1 +0,0 @@ -.sd-bg-primary{background-color:var(--sd-color-primary) !important}.sd-bg-text-primary{color:var(--sd-color-primary-text) !important}button.sd-bg-primary:focus,button.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}a.sd-bg-primary:focus,a.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}.sd-bg-secondary{background-color:var(--sd-color-secondary) !important}.sd-bg-text-secondary{color:var(--sd-color-secondary-text) !important}button.sd-bg-secondary:focus,button.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}a.sd-bg-secondary:focus,a.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}.sd-bg-success{background-color:var(--sd-color-success) !important}.sd-bg-text-success{color:var(--sd-color-success-text) !important}button.sd-bg-success:focus,button.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}a.sd-bg-success:focus,a.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}.sd-bg-info{background-color:var(--sd-color-info) !important}.sd-bg-text-info{color:var(--sd-color-info-text) !important}button.sd-bg-info:focus,button.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}a.sd-bg-info:focus,a.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}.sd-bg-warning{background-color:var(--sd-color-warning) !important}.sd-bg-text-warning{color:var(--sd-color-warning-text) !important}button.sd-bg-warning:focus,button.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}a.sd-bg-warning:focus,a.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}.sd-bg-danger{background-color:var(--sd-color-danger) !important}.sd-bg-text-danger{color:var(--sd-color-danger-text) !important}button.sd-bg-danger:focus,button.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}a.sd-bg-danger:focus,a.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}.sd-bg-light{background-color:var(--sd-color-light) !important}.sd-bg-text-light{color:var(--sd-color-light-text) !important}button.sd-bg-light:focus,button.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}a.sd-bg-light:focus,a.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}.sd-bg-muted{background-color:var(--sd-color-muted) !important}.sd-bg-text-muted{color:var(--sd-color-muted-text) !important}button.sd-bg-muted:focus,button.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}a.sd-bg-muted:focus,a.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}.sd-bg-dark{background-color:var(--sd-color-dark) !important}.sd-bg-text-dark{color:var(--sd-color-dark-text) !important}button.sd-bg-dark:focus,button.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}a.sd-bg-dark:focus,a.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}.sd-bg-black{background-color:var(--sd-color-black) !important}.sd-bg-text-black{color:var(--sd-color-black-text) !important}button.sd-bg-black:focus,button.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}a.sd-bg-black:focus,a.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}.sd-bg-white{background-color:var(--sd-color-white) !important}.sd-bg-text-white{color:var(--sd-color-white-text) !important}button.sd-bg-white:focus,button.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}a.sd-bg-white:focus,a.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}.sd-text-primary,.sd-text-primary>p{color:var(--sd-color-primary) !important}a.sd-text-primary:focus,a.sd-text-primary:hover{color:var(--sd-color-primary-highlight) !important}.sd-text-secondary,.sd-text-secondary>p{color:var(--sd-color-secondary) !important}a.sd-text-secondary:focus,a.sd-text-secondary:hover{color:var(--sd-color-secondary-highlight) !important}.sd-text-success,.sd-text-success>p{color:var(--sd-color-success) !important}a.sd-text-success:focus,a.sd-text-success:hover{color:var(--sd-color-success-highlight) !important}.sd-text-info,.sd-text-info>p{color:var(--sd-color-info) !important}a.sd-text-info:focus,a.sd-text-info:hover{color:var(--sd-color-info-highlight) !important}.sd-text-warning,.sd-text-warning>p{color:var(--sd-color-warning) !important}a.sd-text-warning:focus,a.sd-text-warning:hover{color:var(--sd-color-warning-highlight) !important}.sd-text-danger,.sd-text-danger>p{color:var(--sd-color-danger) !important}a.sd-text-danger:focus,a.sd-text-danger:hover{color:var(--sd-color-danger-highlight) !important}.sd-text-light,.sd-text-light>p{color:var(--sd-color-light) !important}a.sd-text-light:focus,a.sd-text-light:hover{color:var(--sd-color-light-highlight) !important}.sd-text-muted,.sd-text-muted>p{color:var(--sd-color-muted) !important}a.sd-text-muted:focus,a.sd-text-muted:hover{color:var(--sd-color-muted-highlight) !important}.sd-text-dark,.sd-text-dark>p{color:var(--sd-color-dark) !important}a.sd-text-dark:focus,a.sd-text-dark:hover{color:var(--sd-color-dark-highlight) !important}.sd-text-black,.sd-text-black>p{color:var(--sd-color-black) !important}a.sd-text-black:focus,a.sd-text-black:hover{color:var(--sd-color-black-highlight) !important}.sd-text-white,.sd-text-white>p{color:var(--sd-color-white) !important}a.sd-text-white:focus,a.sd-text-white:hover{color:var(--sd-color-white-highlight) !important}.sd-outline-primary{border-color:var(--sd-color-primary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-primary:focus,a.sd-outline-primary:hover{border-color:var(--sd-color-primary-highlight) !important}.sd-outline-secondary{border-color:var(--sd-color-secondary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-secondary:focus,a.sd-outline-secondary:hover{border-color:var(--sd-color-secondary-highlight) !important}.sd-outline-success{border-color:var(--sd-color-success) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-success:focus,a.sd-outline-success:hover{border-color:var(--sd-color-success-highlight) !important}.sd-outline-info{border-color:var(--sd-color-info) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-info:focus,a.sd-outline-info:hover{border-color:var(--sd-color-info-highlight) !important}.sd-outline-warning{border-color:var(--sd-color-warning) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-warning:focus,a.sd-outline-warning:hover{border-color:var(--sd-color-warning-highlight) !important}.sd-outline-danger{border-color:var(--sd-color-danger) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-danger:focus,a.sd-outline-danger:hover{border-color:var(--sd-color-danger-highlight) !important}.sd-outline-light{border-color:var(--sd-color-light) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-light:focus,a.sd-outline-light:hover{border-color:var(--sd-color-light-highlight) !important}.sd-outline-muted{border-color:var(--sd-color-muted) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-muted:focus,a.sd-outline-muted:hover{border-color:var(--sd-color-muted-highlight) !important}.sd-outline-dark{border-color:var(--sd-color-dark) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-dark:focus,a.sd-outline-dark:hover{border-color:var(--sd-color-dark-highlight) !important}.sd-outline-black{border-color:var(--sd-color-black) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-black:focus,a.sd-outline-black:hover{border-color:var(--sd-color-black-highlight) !important}.sd-outline-white{border-color:var(--sd-color-white) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-white:focus,a.sd-outline-white:hover{border-color:var(--sd-color-white-highlight) !important}.sd-bg-transparent{background-color:transparent !important}.sd-outline-transparent{border-color:transparent !important}.sd-text-transparent{color:transparent !important}.sd-p-0{padding:0 !important}.sd-pt-0,.sd-py-0{padding-top:0 !important}.sd-pr-0,.sd-px-0{padding-right:0 !important}.sd-pb-0,.sd-py-0{padding-bottom:0 !important}.sd-pl-0,.sd-px-0{padding-left:0 !important}.sd-p-1{padding:.25rem !important}.sd-pt-1,.sd-py-1{padding-top:.25rem !important}.sd-pr-1,.sd-px-1{padding-right:.25rem !important}.sd-pb-1,.sd-py-1{padding-bottom:.25rem !important}.sd-pl-1,.sd-px-1{padding-left:.25rem !important}.sd-p-2{padding:.5rem !important}.sd-pt-2,.sd-py-2{padding-top:.5rem !important}.sd-pr-2,.sd-px-2{padding-right:.5rem !important}.sd-pb-2,.sd-py-2{padding-bottom:.5rem !important}.sd-pl-2,.sd-px-2{padding-left:.5rem !important}.sd-p-3{padding:1rem !important}.sd-pt-3,.sd-py-3{padding-top:1rem !important}.sd-pr-3,.sd-px-3{padding-right:1rem !important}.sd-pb-3,.sd-py-3{padding-bottom:1rem !important}.sd-pl-3,.sd-px-3{padding-left:1rem !important}.sd-p-4{padding:1.5rem !important}.sd-pt-4,.sd-py-4{padding-top:1.5rem !important}.sd-pr-4,.sd-px-4{padding-right:1.5rem !important}.sd-pb-4,.sd-py-4{padding-bottom:1.5rem !important}.sd-pl-4,.sd-px-4{padding-left:1.5rem !important}.sd-p-5{padding:3rem !important}.sd-pt-5,.sd-py-5{padding-top:3rem !important}.sd-pr-5,.sd-px-5{padding-right:3rem !important}.sd-pb-5,.sd-py-5{padding-bottom:3rem !important}.sd-pl-5,.sd-px-5{padding-left:3rem !important}.sd-m-auto{margin:auto !important}.sd-mt-auto,.sd-my-auto{margin-top:auto !important}.sd-mr-auto,.sd-mx-auto{margin-right:auto !important}.sd-mb-auto,.sd-my-auto{margin-bottom:auto !important}.sd-ml-auto,.sd-mx-auto{margin-left:auto !important}.sd-m-0{margin:0 !important}.sd-mt-0,.sd-my-0{margin-top:0 !important}.sd-mr-0,.sd-mx-0{margin-right:0 !important}.sd-mb-0,.sd-my-0{margin-bottom:0 !important}.sd-ml-0,.sd-mx-0{margin-left:0 !important}.sd-m-1{margin:.25rem !important}.sd-mt-1,.sd-my-1{margin-top:.25rem !important}.sd-mr-1,.sd-mx-1{margin-right:.25rem !important}.sd-mb-1,.sd-my-1{margin-bottom:.25rem !important}.sd-ml-1,.sd-mx-1{margin-left:.25rem !important}.sd-m-2{margin:.5rem !important}.sd-mt-2,.sd-my-2{margin-top:.5rem !important}.sd-mr-2,.sd-mx-2{margin-right:.5rem !important}.sd-mb-2,.sd-my-2{margin-bottom:.5rem !important}.sd-ml-2,.sd-mx-2{margin-left:.5rem !important}.sd-m-3{margin:1rem !important}.sd-mt-3,.sd-my-3{margin-top:1rem !important}.sd-mr-3,.sd-mx-3{margin-right:1rem !important}.sd-mb-3,.sd-my-3{margin-bottom:1rem !important}.sd-ml-3,.sd-mx-3{margin-left:1rem !important}.sd-m-4{margin:1.5rem !important}.sd-mt-4,.sd-my-4{margin-top:1.5rem !important}.sd-mr-4,.sd-mx-4{margin-right:1.5rem !important}.sd-mb-4,.sd-my-4{margin-bottom:1.5rem !important}.sd-ml-4,.sd-mx-4{margin-left:1.5rem !important}.sd-m-5{margin:3rem !important}.sd-mt-5,.sd-my-5{margin-top:3rem !important}.sd-mr-5,.sd-mx-5{margin-right:3rem !important}.sd-mb-5,.sd-my-5{margin-bottom:3rem !important}.sd-ml-5,.sd-mx-5{margin-left:3rem !important}.sd-w-25{width:25% !important}.sd-w-50{width:50% !important}.sd-w-75{width:75% !important}.sd-w-100{width:100% !important}.sd-w-auto{width:auto !important}.sd-h-25{height:25% !important}.sd-h-50{height:50% !important}.sd-h-75{height:75% !important}.sd-h-100{height:100% !important}.sd-h-auto{height:auto !important}.sd-d-none{display:none !important}.sd-d-inline{display:inline !important}.sd-d-inline-block{display:inline-block !important}.sd-d-block{display:block !important}.sd-d-grid{display:grid !important}.sd-d-flex-row{display:-ms-flexbox !important;display:flex !important;flex-direction:row !important}.sd-d-flex-column{display:-ms-flexbox !important;display:flex !important;flex-direction:column !important}.sd-d-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}@media(min-width: 576px){.sd-d-sm-none{display:none !important}.sd-d-sm-inline{display:inline !important}.sd-d-sm-inline-block{display:inline-block !important}.sd-d-sm-block{display:block !important}.sd-d-sm-grid{display:grid !important}.sd-d-sm-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-sm-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 768px){.sd-d-md-none{display:none !important}.sd-d-md-inline{display:inline !important}.sd-d-md-inline-block{display:inline-block !important}.sd-d-md-block{display:block !important}.sd-d-md-grid{display:grid !important}.sd-d-md-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-md-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 992px){.sd-d-lg-none{display:none !important}.sd-d-lg-inline{display:inline !important}.sd-d-lg-inline-block{display:inline-block !important}.sd-d-lg-block{display:block !important}.sd-d-lg-grid{display:grid !important}.sd-d-lg-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-lg-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 1200px){.sd-d-xl-none{display:none !important}.sd-d-xl-inline{display:inline !important}.sd-d-xl-inline-block{display:inline-block !important}.sd-d-xl-block{display:block !important}.sd-d-xl-grid{display:grid !important}.sd-d-xl-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-xl-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}.sd-align-major-start{justify-content:flex-start !important}.sd-align-major-end{justify-content:flex-end !important}.sd-align-major-center{justify-content:center !important}.sd-align-major-justify{justify-content:space-between !important}.sd-align-major-spaced{justify-content:space-evenly !important}.sd-align-minor-start{align-items:flex-start !important}.sd-align-minor-end{align-items:flex-end !important}.sd-align-minor-center{align-items:center !important}.sd-align-minor-stretch{align-items:stretch !important}.sd-text-justify{text-align:justify !important}.sd-text-left{text-align:left !important}.sd-text-right{text-align:right !important}.sd-text-center{text-align:center !important}.sd-font-weight-light{font-weight:300 !important}.sd-font-weight-lighter{font-weight:lighter !important}.sd-font-weight-normal{font-weight:400 !important}.sd-font-weight-bold{font-weight:700 !important}.sd-font-weight-bolder{font-weight:bolder !important}.sd-font-italic{font-style:italic !important}.sd-text-decoration-none{text-decoration:none !important}.sd-text-lowercase{text-transform:lowercase !important}.sd-text-uppercase{text-transform:uppercase !important}.sd-text-capitalize{text-transform:capitalize !important}.sd-text-wrap{white-space:normal !important}.sd-text-nowrap{white-space:nowrap !important}.sd-text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sd-fs-1,.sd-fs-1>p{font-size:calc(1.375rem + 1.5vw) !important;line-height:unset !important}.sd-fs-2,.sd-fs-2>p{font-size:calc(1.325rem + 0.9vw) !important;line-height:unset !important}.sd-fs-3,.sd-fs-3>p{font-size:calc(1.3rem + 0.6vw) !important;line-height:unset !important}.sd-fs-4,.sd-fs-4>p{font-size:calc(1.275rem + 0.3vw) !important;line-height:unset !important}.sd-fs-5,.sd-fs-5>p{font-size:1.25rem !important;line-height:unset !important}.sd-fs-6,.sd-fs-6>p{font-size:1rem !important;line-height:unset !important}.sd-border-0{border:0 solid !important}.sd-border-top-0{border-top:0 solid !important}.sd-border-bottom-0{border-bottom:0 solid !important}.sd-border-right-0{border-right:0 solid !important}.sd-border-left-0{border-left:0 solid !important}.sd-border-1{border:1px solid !important}.sd-border-top-1{border-top:1px solid !important}.sd-border-bottom-1{border-bottom:1px solid !important}.sd-border-right-1{border-right:1px solid !important}.sd-border-left-1{border-left:1px solid !important}.sd-border-2{border:2px solid !important}.sd-border-top-2{border-top:2px solid !important}.sd-border-bottom-2{border-bottom:2px solid !important}.sd-border-right-2{border-right:2px solid !important}.sd-border-left-2{border-left:2px solid !important}.sd-border-3{border:3px solid !important}.sd-border-top-3{border-top:3px solid !important}.sd-border-bottom-3{border-bottom:3px solid !important}.sd-border-right-3{border-right:3px solid !important}.sd-border-left-3{border-left:3px solid !important}.sd-border-4{border:4px solid !important}.sd-border-top-4{border-top:4px solid !important}.sd-border-bottom-4{border-bottom:4px solid !important}.sd-border-right-4{border-right:4px solid !important}.sd-border-left-4{border-left:4px solid !important}.sd-border-5{border:5px solid !important}.sd-border-top-5{border-top:5px solid !important}.sd-border-bottom-5{border-bottom:5px solid !important}.sd-border-right-5{border-right:5px solid !important}.sd-border-left-5{border-left:5px solid !important}.sd-rounded-0{border-radius:0 !important}.sd-rounded-1{border-radius:.2rem !important}.sd-rounded-2{border-radius:.3rem !important}.sd-rounded-3{border-radius:.5rem !important}.sd-rounded-pill{border-radius:50rem !important}.sd-rounded-circle{border-radius:50% !important}.shadow-none{box-shadow:none !important}.sd-shadow-sm{box-shadow:0 .125rem .25rem var(--sd-color-shadow) !important}.sd-shadow-md{box-shadow:0 .5rem 1rem var(--sd-color-shadow) !important}.sd-shadow-lg{box-shadow:0 1rem 3rem var(--sd-color-shadow) !important}@keyframes sd-slide-from-left{0%{transform:translateX(-100%)}100%{transform:translateX(0)}}@keyframes sd-slide-from-right{0%{transform:translateX(200%)}100%{transform:translateX(0)}}@keyframes sd-grow100{0%{transform:scale(0);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50{0%{transform:scale(0.5);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50-rot20{0%{transform:scale(0.5) rotateZ(-20deg);opacity:.5}75%{transform:scale(1) rotateZ(5deg);opacity:1}95%{transform:scale(1) rotateZ(-1deg);opacity:1}100%{transform:scale(1) rotateZ(0);opacity:1}}.sd-animate-slide-from-left{animation:1s ease-out 0s 1 normal none running sd-slide-from-left}.sd-animate-slide-from-right{animation:1s ease-out 0s 1 normal none running sd-slide-from-right}.sd-animate-grow100{animation:1s ease-out 0s 1 normal none running sd-grow100}.sd-animate-grow50{animation:1s ease-out 0s 1 normal none running sd-grow50}.sd-animate-grow50-rot20{animation:1s ease-out 0s 1 normal none running sd-grow50-rot20}.sd-badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.sd-badge:empty{display:none}a.sd-badge{text-decoration:none}.sd-btn .sd-badge{position:relative;top:-1px}.sd-btn{background-color:transparent;border:1px solid transparent;border-radius:.25rem;cursor:pointer;display:inline-block;font-weight:400;font-size:1rem;line-height:1.5;padding:.375rem .75rem;text-align:center;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;vertical-align:middle;user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none}.sd-btn:hover{text-decoration:none}@media(prefers-reduced-motion: reduce){.sd-btn{transition:none}}.sd-btn-primary,.sd-btn-outline-primary:hover,.sd-btn-outline-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-primary:hover,.sd-btn-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary-highlight) !important;border-color:var(--sd-color-primary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-primary{color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary,.sd-btn-outline-secondary:hover,.sd-btn-outline-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary:hover,.sd-btn-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary-highlight) !important;border-color:var(--sd-color-secondary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-secondary{color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success,.sd-btn-outline-success:hover,.sd-btn-outline-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success:hover,.sd-btn-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success-highlight) !important;border-color:var(--sd-color-success-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-success{color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info,.sd-btn-outline-info:hover,.sd-btn-outline-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info:hover,.sd-btn-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info-highlight) !important;border-color:var(--sd-color-info-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-info{color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning,.sd-btn-outline-warning:hover,.sd-btn-outline-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning:hover,.sd-btn-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning-highlight) !important;border-color:var(--sd-color-warning-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-warning{color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger,.sd-btn-outline-danger:hover,.sd-btn-outline-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger:hover,.sd-btn-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger-highlight) !important;border-color:var(--sd-color-danger-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-danger{color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light,.sd-btn-outline-light:hover,.sd-btn-outline-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light:hover,.sd-btn-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light-highlight) !important;border-color:var(--sd-color-light-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-light{color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted,.sd-btn-outline-muted:hover,.sd-btn-outline-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted:hover,.sd-btn-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted-highlight) !important;border-color:var(--sd-color-muted-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-muted{color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark,.sd-btn-outline-dark:hover,.sd-btn-outline-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark:hover,.sd-btn-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark-highlight) !important;border-color:var(--sd-color-dark-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-dark{color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black,.sd-btn-outline-black:hover,.sd-btn-outline-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black:hover,.sd-btn-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black-highlight) !important;border-color:var(--sd-color-black-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-black{color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white,.sd-btn-outline-white:hover,.sd-btn-outline-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white:hover,.sd-btn-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white-highlight) !important;border-color:var(--sd-color-white-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-white{color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.sd-hide-link-text{font-size:0}.sd-octicon,.sd-material-icon{display:inline-block;fill:currentColor;vertical-align:middle}.sd-avatar-xs{border-radius:50%;object-fit:cover;object-position:center;width:1rem;height:1rem}.sd-avatar-sm{border-radius:50%;object-fit:cover;object-position:center;width:3rem;height:3rem}.sd-avatar-md{border-radius:50%;object-fit:cover;object-position:center;width:5rem;height:5rem}.sd-avatar-lg{border-radius:50%;object-fit:cover;object-position:center;width:7rem;height:7rem}.sd-avatar-xl{border-radius:50%;object-fit:cover;object-position:center;width:10rem;height:10rem}.sd-avatar-inherit{border-radius:50%;object-fit:cover;object-position:center;width:inherit;height:inherit}.sd-avatar-initial{border-radius:50%;object-fit:cover;object-position:center;width:initial;height:initial}.sd-card{background-clip:border-box;background-color:var(--sd-color-card-background);border:1px solid var(--sd-color-card-border);border-radius:.25rem;color:var(--sd-color-card-text);display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;position:relative;word-wrap:break-word}.sd-card>hr{margin-left:0;margin-right:0}.sd-card-hover:hover{border-color:var(--sd-color-card-border-hover);transform:scale(1.01)}.sd-card-body{-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem 1rem}.sd-card-title{margin-bottom:.5rem}.sd-card-subtitle{margin-top:-0.25rem;margin-bottom:0}.sd-card-text:last-child{margin-bottom:0}.sd-card-link:hover{text-decoration:none}.sd-card-link+.card-link{margin-left:1rem}.sd-card-header{padding:.5rem 1rem;margin-bottom:0;background-color:var(--sd-color-card-header);border-bottom:1px solid var(--sd-color-card-border)}.sd-card-header:first-child{border-radius:calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0}.sd-card-footer{padding:.5rem 1rem;background-color:var(--sd-color-card-footer);border-top:1px solid var(--sd-color-card-border)}.sd-card-footer:last-child{border-radius:0 0 calc(0.25rem - 1px) calc(0.25rem - 1px)}.sd-card-header-tabs{margin-right:-0.5rem;margin-bottom:-0.5rem;margin-left:-0.5rem;border-bottom:0}.sd-card-header-pills{margin-right:-0.5rem;margin-left:-0.5rem}.sd-card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom,.sd-card-img-top{width:100%}.sd-card-img,.sd-card-img-top{border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom{border-bottom-left-radius:calc(0.25rem - 1px);border-bottom-right-radius:calc(0.25rem - 1px)}.sd-cards-carousel{width:100%;display:flex;flex-wrap:nowrap;-ms-flex-direction:row;flex-direction:row;overflow-x:hidden;scroll-snap-type:x mandatory}.sd-cards-carousel.sd-show-scrollbar{overflow-x:auto}.sd-cards-carousel:hover,.sd-cards-carousel:focus{overflow-x:auto}.sd-cards-carousel>.sd-card{flex-shrink:0;scroll-snap-align:start}.sd-cards-carousel>.sd-card:not(:last-child){margin-right:3px}.sd-card-cols-1>.sd-card{width:90%}.sd-card-cols-2>.sd-card{width:45%}.sd-card-cols-3>.sd-card{width:30%}.sd-card-cols-4>.sd-card{width:22.5%}.sd-card-cols-5>.sd-card{width:18%}.sd-card-cols-6>.sd-card{width:15%}.sd-card-cols-7>.sd-card{width:12.8571428571%}.sd-card-cols-8>.sd-card{width:11.25%}.sd-card-cols-9>.sd-card{width:10%}.sd-card-cols-10>.sd-card{width:9%}.sd-card-cols-11>.sd-card{width:8.1818181818%}.sd-card-cols-12>.sd-card{width:7.5%}.sd-container,.sd-container-fluid,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container-xl{margin-left:auto;margin-right:auto;padding-left:var(--sd-gutter-x, 0.75rem);padding-right:var(--sd-gutter-x, 0.75rem);width:100%}@media(min-width: 576px){.sd-container-sm,.sd-container{max-width:540px}}@media(min-width: 768px){.sd-container-md,.sd-container-sm,.sd-container{max-width:720px}}@media(min-width: 992px){.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:960px}}@media(min-width: 1200px){.sd-container-xl,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:1140px}}.sd-row{--sd-gutter-x: 1.5rem;--sd-gutter-y: 0;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:calc(var(--sd-gutter-y) * -1);margin-right:calc(var(--sd-gutter-x) * -0.5);margin-left:calc(var(--sd-gutter-x) * -0.5)}.sd-row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--sd-gutter-x) * 0.5);padding-left:calc(var(--sd-gutter-x) * 0.5);margin-top:var(--sd-gutter-y)}.sd-col{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-auto>*{flex:0 0 auto;width:auto}.sd-row-cols-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}@media(min-width: 576px){.sd-col-sm{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-sm-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-sm-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-sm-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-sm-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-sm-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-sm-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-sm-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-sm-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-sm-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-sm-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-sm-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-sm-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-sm-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 768px){.sd-col-md{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-md-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-md-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-md-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-md-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-md-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-md-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-md-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-md-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-md-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-md-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-md-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-md-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-md-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 992px){.sd-col-lg{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-lg-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-lg-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-lg-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-lg-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-lg-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-lg-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-lg-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-lg-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-lg-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-lg-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-lg-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-lg-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-lg-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 1200px){.sd-col-xl{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-xl-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-xl-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-xl-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-xl-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-xl-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-xl-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-xl-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-xl-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-xl-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-xl-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-xl-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-xl-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-xl-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}.sd-col-auto{flex:0 0 auto;-ms-flex:0 0 auto;width:auto}.sd-col-1{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}.sd-col-2{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-col-3{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-col-4{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-col-5{flex:0 0 auto;-ms-flex:0 0 auto;width:41.6666666667%}.sd-col-6{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-col-7{flex:0 0 auto;-ms-flex:0 0 auto;width:58.3333333333%}.sd-col-8{flex:0 0 auto;-ms-flex:0 0 auto;width:66.6666666667%}.sd-col-9{flex:0 0 auto;-ms-flex:0 0 auto;width:75%}.sd-col-10{flex:0 0 auto;-ms-flex:0 0 auto;width:83.3333333333%}.sd-col-11{flex:0 0 auto;-ms-flex:0 0 auto;width:91.6666666667%}.sd-col-12{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-g-0,.sd-gy-0{--sd-gutter-y: 0}.sd-g-0,.sd-gx-0{--sd-gutter-x: 0}.sd-g-1,.sd-gy-1{--sd-gutter-y: 0.25rem}.sd-g-1,.sd-gx-1{--sd-gutter-x: 0.25rem}.sd-g-2,.sd-gy-2{--sd-gutter-y: 0.5rem}.sd-g-2,.sd-gx-2{--sd-gutter-x: 0.5rem}.sd-g-3,.sd-gy-3{--sd-gutter-y: 1rem}.sd-g-3,.sd-gx-3{--sd-gutter-x: 1rem}.sd-g-4,.sd-gy-4{--sd-gutter-y: 1.5rem}.sd-g-4,.sd-gx-4{--sd-gutter-x: 1.5rem}.sd-g-5,.sd-gy-5{--sd-gutter-y: 3rem}.sd-g-5,.sd-gx-5{--sd-gutter-x: 3rem}@media(min-width: 576px){.sd-col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-sm-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-sm-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-sm-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-sm-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-sm-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-sm-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-sm-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-sm-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-sm-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-sm-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-sm-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-sm-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-sm-0,.sd-gy-sm-0{--sd-gutter-y: 0}.sd-g-sm-0,.sd-gx-sm-0{--sd-gutter-x: 0}.sd-g-sm-1,.sd-gy-sm-1{--sd-gutter-y: 0.25rem}.sd-g-sm-1,.sd-gx-sm-1{--sd-gutter-x: 0.25rem}.sd-g-sm-2,.sd-gy-sm-2{--sd-gutter-y: 0.5rem}.sd-g-sm-2,.sd-gx-sm-2{--sd-gutter-x: 0.5rem}.sd-g-sm-3,.sd-gy-sm-3{--sd-gutter-y: 1rem}.sd-g-sm-3,.sd-gx-sm-3{--sd-gutter-x: 1rem}.sd-g-sm-4,.sd-gy-sm-4{--sd-gutter-y: 1.5rem}.sd-g-sm-4,.sd-gx-sm-4{--sd-gutter-x: 1.5rem}.sd-g-sm-5,.sd-gy-sm-5{--sd-gutter-y: 3rem}.sd-g-sm-5,.sd-gx-sm-5{--sd-gutter-x: 3rem}}@media(min-width: 768px){.sd-col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-md-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-md-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-md-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-md-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-md-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-md-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-md-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-md-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-md-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-md-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-md-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-md-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-md-0,.sd-gy-md-0{--sd-gutter-y: 0}.sd-g-md-0,.sd-gx-md-0{--sd-gutter-x: 0}.sd-g-md-1,.sd-gy-md-1{--sd-gutter-y: 0.25rem}.sd-g-md-1,.sd-gx-md-1{--sd-gutter-x: 0.25rem}.sd-g-md-2,.sd-gy-md-2{--sd-gutter-y: 0.5rem}.sd-g-md-2,.sd-gx-md-2{--sd-gutter-x: 0.5rem}.sd-g-md-3,.sd-gy-md-3{--sd-gutter-y: 1rem}.sd-g-md-3,.sd-gx-md-3{--sd-gutter-x: 1rem}.sd-g-md-4,.sd-gy-md-4{--sd-gutter-y: 1.5rem}.sd-g-md-4,.sd-gx-md-4{--sd-gutter-x: 1.5rem}.sd-g-md-5,.sd-gy-md-5{--sd-gutter-y: 3rem}.sd-g-md-5,.sd-gx-md-5{--sd-gutter-x: 3rem}}@media(min-width: 992px){.sd-col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-lg-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-lg-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-lg-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-lg-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-lg-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-lg-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-lg-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-lg-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-lg-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-lg-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-lg-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-lg-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-lg-0,.sd-gy-lg-0{--sd-gutter-y: 0}.sd-g-lg-0,.sd-gx-lg-0{--sd-gutter-x: 0}.sd-g-lg-1,.sd-gy-lg-1{--sd-gutter-y: 0.25rem}.sd-g-lg-1,.sd-gx-lg-1{--sd-gutter-x: 0.25rem}.sd-g-lg-2,.sd-gy-lg-2{--sd-gutter-y: 0.5rem}.sd-g-lg-2,.sd-gx-lg-2{--sd-gutter-x: 0.5rem}.sd-g-lg-3,.sd-gy-lg-3{--sd-gutter-y: 1rem}.sd-g-lg-3,.sd-gx-lg-3{--sd-gutter-x: 1rem}.sd-g-lg-4,.sd-gy-lg-4{--sd-gutter-y: 1.5rem}.sd-g-lg-4,.sd-gx-lg-4{--sd-gutter-x: 1.5rem}.sd-g-lg-5,.sd-gy-lg-5{--sd-gutter-y: 3rem}.sd-g-lg-5,.sd-gx-lg-5{--sd-gutter-x: 3rem}}@media(min-width: 1200px){.sd-col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-xl-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-xl-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-xl-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-xl-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-xl-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-xl-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-xl-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-xl-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-xl-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-xl-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-xl-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-xl-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-xl-0,.sd-gy-xl-0{--sd-gutter-y: 0}.sd-g-xl-0,.sd-gx-xl-0{--sd-gutter-x: 0}.sd-g-xl-1,.sd-gy-xl-1{--sd-gutter-y: 0.25rem}.sd-g-xl-1,.sd-gx-xl-1{--sd-gutter-x: 0.25rem}.sd-g-xl-2,.sd-gy-xl-2{--sd-gutter-y: 0.5rem}.sd-g-xl-2,.sd-gx-xl-2{--sd-gutter-x: 0.5rem}.sd-g-xl-3,.sd-gy-xl-3{--sd-gutter-y: 1rem}.sd-g-xl-3,.sd-gx-xl-3{--sd-gutter-x: 1rem}.sd-g-xl-4,.sd-gy-xl-4{--sd-gutter-y: 1.5rem}.sd-g-xl-4,.sd-gx-xl-4{--sd-gutter-x: 1.5rem}.sd-g-xl-5,.sd-gy-xl-5{--sd-gutter-y: 3rem}.sd-g-xl-5,.sd-gx-xl-5{--sd-gutter-x: 3rem}}.sd-flex-row-reverse{flex-direction:row-reverse !important}details.sd-dropdown{position:relative;font-size:var(--sd-fontsize-dropdown)}details.sd-dropdown:hover{cursor:pointer}details.sd-dropdown .sd-summary-content{cursor:default}details.sd-dropdown summary.sd-summary-title{padding:.5em .6em .5em 1em;font-size:var(--sd-fontsize-dropdown-title);font-weight:var(--sd-fontweight-dropdown-title);user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;list-style:none;display:inline-flex;justify-content:space-between}details.sd-dropdown summary.sd-summary-title::-webkit-details-marker{display:none}details.sd-dropdown summary.sd-summary-title:focus{outline:none}details.sd-dropdown summary.sd-summary-title .sd-summary-icon{margin-right:.6em;display:inline-flex;align-items:center}details.sd-dropdown summary.sd-summary-title .sd-summary-icon svg{opacity:.8}details.sd-dropdown summary.sd-summary-title .sd-summary-text{flex-grow:1;line-height:1.5;padding-right:.5rem}details.sd-dropdown summary.sd-summary-title .sd-summary-state-marker{pointer-events:none;display:inline-flex;align-items:center}details.sd-dropdown summary.sd-summary-title .sd-summary-state-marker svg{opacity:.6}details.sd-dropdown summary.sd-summary-title:hover .sd-summary-state-marker svg{opacity:1;transform:scale(1.1)}details.sd-dropdown[open] summary .sd-octicon.no-title{visibility:hidden}details.sd-dropdown .sd-summary-chevron-right{transition:.25s}details.sd-dropdown[open]>.sd-summary-title .sd-summary-chevron-right{transform:rotate(90deg)}details.sd-dropdown[open]>.sd-summary-title .sd-summary-chevron-down{transform:rotate(180deg)}details.sd-dropdown:not([open]).sd-card{border:none}details.sd-dropdown:not([open])>.sd-card-header{border:1px solid var(--sd-color-card-border);border-radius:.25rem}details.sd-dropdown.sd-fade-in[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out;animation:sd-fade-in .5s ease-in-out}details.sd-dropdown.sd-fade-in-slide-down[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out}.sd-col>.sd-dropdown{width:100%}.sd-summary-content>.sd-tab-set:first-child{margin-top:0}@keyframes sd-fade-in{0%{opacity:0}100%{opacity:1}}@keyframes sd-slide-down{0%{transform:translate(0, -10px)}100%{transform:translate(0, 0)}}.sd-tab-set{border-radius:.125rem;display:flex;flex-wrap:wrap;margin:1em 0;position:relative}.sd-tab-set>input{opacity:0;position:absolute}.sd-tab-set>input:checked+label{border-color:var(--sd-color-tabs-underline-active);color:var(--sd-color-tabs-label-active)}.sd-tab-set>input:checked+label+.sd-tab-content{display:block}.sd-tab-set>input:not(:checked)+label:hover{color:var(--sd-color-tabs-label-hover);border-color:var(--sd-color-tabs-underline-hover)}.sd-tab-set>input:focus+label{outline-style:auto}.sd-tab-set>input:not(.focus-visible)+label{outline:none;-webkit-tap-highlight-color:transparent}.sd-tab-set>label{border-bottom:.125rem solid transparent;margin-bottom:0;color:var(--sd-color-tabs-label-inactive);border-color:var(--sd-color-tabs-underline-inactive);cursor:pointer;font-size:var(--sd-fontsize-tabs-label);font-weight:700;padding:1em 1.25em .5em;transition:color 250ms;width:auto;z-index:1}html .sd-tab-set>label:hover{color:var(--sd-color-tabs-label-active)}.sd-col>.sd-tab-set{width:100%}.sd-tab-content{box-shadow:0 -0.0625rem var(--sd-color-tabs-overline),0 .0625rem var(--sd-color-tabs-underline);display:none;order:99;padding-bottom:.75rem;padding-top:.75rem;width:100%}.sd-tab-content>:first-child{margin-top:0 !important}.sd-tab-content>:last-child{margin-bottom:0 !important}.sd-tab-content>.sd-tab-set{margin:0}.sd-sphinx-override,.sd-sphinx-override *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sd-sphinx-override p{margin-top:0}:root{--sd-color-primary: #0071bc;--sd-color-secondary: #6c757d;--sd-color-success: #28a745;--sd-color-info: #17a2b8;--sd-color-warning: #f0b37e;--sd-color-danger: #dc3545;--sd-color-light: #f8f9fa;--sd-color-muted: #6c757d;--sd-color-dark: #212529;--sd-color-black: black;--sd-color-white: white;--sd-color-primary-highlight: #0060a0;--sd-color-secondary-highlight: #5c636a;--sd-color-success-highlight: #228e3b;--sd-color-info-highlight: #148a9c;--sd-color-warning-highlight: #cc986b;--sd-color-danger-highlight: #bb2d3b;--sd-color-light-highlight: #d3d4d5;--sd-color-muted-highlight: #5c636a;--sd-color-dark-highlight: #1c1f23;--sd-color-black-highlight: black;--sd-color-white-highlight: #d9d9d9;--sd-color-primary-bg: rgba(0, 113, 188, 0.2);--sd-color-secondary-bg: rgba(108, 117, 125, 0.2);--sd-color-success-bg: rgba(40, 167, 69, 0.2);--sd-color-info-bg: rgba(23, 162, 184, 0.2);--sd-color-warning-bg: rgba(240, 179, 126, 0.2);--sd-color-danger-bg: rgba(220, 53, 69, 0.2);--sd-color-light-bg: rgba(248, 249, 250, 0.2);--sd-color-muted-bg: rgba(108, 117, 125, 0.2);--sd-color-dark-bg: rgba(33, 37, 41, 0.2);--sd-color-black-bg: rgba(0, 0, 0, 0.2);--sd-color-white-bg: rgba(255, 255, 255, 0.2);--sd-color-primary-text: #fff;--sd-color-secondary-text: #fff;--sd-color-success-text: #fff;--sd-color-info-text: #fff;--sd-color-warning-text: #212529;--sd-color-danger-text: #fff;--sd-color-light-text: #212529;--sd-color-muted-text: #fff;--sd-color-dark-text: #fff;--sd-color-black-text: #fff;--sd-color-white-text: #212529;--sd-color-shadow: rgba(0, 0, 0, 0.15);--sd-color-card-border: rgba(0, 0, 0, 0.125);--sd-color-card-border-hover: hsla(231, 99%, 66%, 1);--sd-color-card-background: transparent;--sd-color-card-text: inherit;--sd-color-card-header: transparent;--sd-color-card-footer: transparent;--sd-color-tabs-label-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-hover: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-inactive: hsl(0, 0%, 66%);--sd-color-tabs-underline-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-underline-hover: rgba(178, 206, 245, 0.62);--sd-color-tabs-underline-inactive: transparent;--sd-color-tabs-overline: rgb(222, 222, 222);--sd-color-tabs-underline: rgb(222, 222, 222);--sd-fontsize-tabs-label: 1rem;--sd-fontsize-dropdown: inherit;--sd-fontsize-dropdown-title: 1rem;--sd-fontweight-dropdown-title: 700} diff --git a/pulls/1961/_static/sphinx_highlight.js b/pulls/1961/_static/sphinx_highlight.js deleted file mode 100644 index aae669d7ea..0000000000 --- a/pulls/1961/_static/sphinx_highlight.js +++ /dev/null @@ -1,144 +0,0 @@ -/* Highlighting utilities for Sphinx HTML documentation. */ -"use strict"; - -const SPHINX_HIGHLIGHT_ENABLED = true - -/** - * highlight a given string on a node by wrapping it in - * span elements with the given class name. - */ -const _highlight = (node, addItems, text, className) => { - if (node.nodeType === Node.TEXT_NODE) { - const val = node.nodeValue; - const parent = node.parentNode; - const pos = val.toLowerCase().indexOf(text); - if ( - pos >= 0 && - !parent.classList.contains(className) && - !parent.classList.contains("nohighlight") - ) { - let span; - - const closestNode = parent.closest("body, svg, foreignObject"); - const isInSVG = closestNode && closestNode.matches("svg"); - if (isInSVG) { - span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); - } else { - span = document.createElement("span"); - span.classList.add(className); - } - - span.appendChild(document.createTextNode(val.substr(pos, text.length))); - parent.insertBefore( - span, - parent.insertBefore( - document.createTextNode(val.substr(pos + text.length)), - node.nextSibling - ) - ); - node.nodeValue = val.substr(0, pos); - - if (isInSVG) { - const rect = document.createElementNS( - "http://www.w3.org/2000/svg", - "rect" - ); - const bbox = parent.getBBox(); - rect.x.baseVal.value = bbox.x; - rect.y.baseVal.value = bbox.y; - rect.width.baseVal.value = bbox.width; - rect.height.baseVal.value = bbox.height; - rect.setAttribute("class", className); - addItems.push({ parent: parent, target: rect }); - } - } - } else if (node.matches && !node.matches("button, select, textarea")) { - node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); - } -}; -const _highlightText = (thisNode, text, className) => { - let addItems = []; - _highlight(thisNode, addItems, text, className); - addItems.forEach((obj) => - obj.parent.insertAdjacentElement("beforebegin", obj.target) - ); -}; - -/** - * Small JavaScript module for the documentation. - */ -const SphinxHighlight = { - - /** - * highlight the search words provided in localstorage in the text - */ - highlightSearchWords: () => { - if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight - - // get and clear terms from localstorage - const url = new URL(window.location); - const highlight = - localStorage.getItem("sphinx_highlight_terms") - || url.searchParams.get("highlight") - || ""; - localStorage.removeItem("sphinx_highlight_terms") - url.searchParams.delete("highlight"); - window.history.replaceState({}, "", url); - - // get individual terms from highlight string - const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); - if (terms.length === 0) return; // nothing to do - - // There should never be more than one element matching "div.body" - const divBody = document.querySelectorAll("div.body"); - const body = divBody.length ? divBody[0] : document.querySelector("body"); - window.setTimeout(() => { - terms.forEach((term) => _highlightText(body, term, "highlighted")); - }, 10); - - const searchBox = document.getElementById("searchbox"); - if (searchBox === null) return; - searchBox.appendChild( - document - .createRange() - .createContextualFragment( - '" - ) - ); - }, - - /** - * helper function to hide the search marks again - */ - hideSearchWords: () => { - document - .querySelectorAll("#searchbox .highlight-link") - .forEach((el) => el.remove()); - document - .querySelectorAll("span.highlighted") - .forEach((el) => el.classList.remove("highlighted")); - localStorage.removeItem("sphinx_highlight_terms") - }, - - initEscapeListener: () => { - // only install a listener if it is really needed - if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; - - document.addEventListener("keydown", (event) => { - // bail for input elements - if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; - // bail with special keys - if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; - if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { - SphinxHighlight.hideSearchWords(); - event.preventDefault(); - } - }); - }, -}; - -_ready(SphinxHighlight.highlightSearchWords); -_ready(SphinxHighlight.initEscapeListener); diff --git a/pulls/1961/_static/styles/furo-extensions.css b/pulls/1961/_static/styles/furo-extensions.css deleted file mode 100644 index 8229587618..0000000000 --- a/pulls/1961/_static/styles/furo-extensions.css +++ /dev/null @@ -1,2 +0,0 @@ -#furo-sidebar-ad-placement{padding:var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal)}#furo-sidebar-ad-placement .ethical-sidebar{background:var(--color-background-secondary);border:none;box-shadow:none}#furo-sidebar-ad-placement .ethical-sidebar:hover{background:var(--color-background-hover)}#furo-sidebar-ad-placement .ethical-sidebar a{color:var(--color-foreground-primary)}#furo-sidebar-ad-placement .ethical-callout a{color:var(--color-foreground-secondary)!important}#furo-readthedocs-versions{background:transparent;display:block;position:static;width:100%}#furo-readthedocs-versions .rst-versions{background:#1a1c1e}#furo-readthedocs-versions .rst-current-version{background:var(--color-sidebar-item-background);cursor:unset}#furo-readthedocs-versions .rst-current-version:hover{background:var(--color-sidebar-item-background)}#furo-readthedocs-versions .rst-current-version .fa-book{color:var(--color-foreground-primary)}#furo-readthedocs-versions>.rst-other-versions{padding:0}#furo-readthedocs-versions>.rst-other-versions small{opacity:1}#furo-readthedocs-versions .injected .rst-versions{position:unset}#furo-readthedocs-versions:focus-within,#furo-readthedocs-versions:hover{box-shadow:0 0 0 1px var(--color-sidebar-background-border)}#furo-readthedocs-versions:focus-within .rst-current-version,#furo-readthedocs-versions:hover .rst-current-version{background:#1a1c1e;font-size:inherit;height:auto;line-height:inherit;padding:12px;text-align:right}#furo-readthedocs-versions:focus-within .rst-current-version .fa-book,#furo-readthedocs-versions:hover .rst-current-version .fa-book{color:#fff;float:left}#furo-readthedocs-versions:focus-within .fa-caret-down,#furo-readthedocs-versions:hover .fa-caret-down{display:none}#furo-readthedocs-versions:focus-within .injected,#furo-readthedocs-versions:focus-within .rst-current-version,#furo-readthedocs-versions:focus-within .rst-other-versions,#furo-readthedocs-versions:hover .injected,#furo-readthedocs-versions:hover .rst-current-version,#furo-readthedocs-versions:hover .rst-other-versions{display:block}#furo-readthedocs-versions:focus-within>.rst-current-version,#furo-readthedocs-versions:hover>.rst-current-version{display:none}.highlight:hover button.copybtn{color:var(--color-code-foreground)}.highlight button.copybtn{align-items:center;background-color:var(--color-code-background);border:none;color:var(--color-background-item);cursor:pointer;height:1.25em;right:.5rem;top:.625rem;transition:color .3s,opacity .3s;width:1.25em}.highlight button.copybtn:hover{background-color:var(--color-code-background);color:var(--color-brand-content)}.highlight button.copybtn:after{background-color:transparent;color:var(--color-code-foreground);display:none}.highlight button.copybtn.success{color:#22863a;transition:color 0ms}.highlight button.copybtn.success:after{display:block}.highlight button.copybtn svg{padding:0}body{--sd-color-primary:var(--color-brand-primary);--sd-color-primary-highlight:var(--color-brand-content);--sd-color-primary-text:var(--color-background-primary);--sd-color-shadow:rgba(0,0,0,.05);--sd-color-card-border:var(--color-card-border);--sd-color-card-border-hover:var(--color-brand-content);--sd-color-card-background:var(--color-card-background);--sd-color-card-text:var(--color-foreground-primary);--sd-color-card-header:var(--color-card-marginals-background);--sd-color-card-footer:var(--color-card-marginals-background);--sd-color-tabs-label-active:var(--color-brand-content);--sd-color-tabs-label-hover:var(--color-foreground-muted);--sd-color-tabs-label-inactive:var(--color-foreground-muted);--sd-color-tabs-underline-active:var(--color-brand-content);--sd-color-tabs-underline-hover:var(--color-foreground-border);--sd-color-tabs-underline-inactive:var(--color-background-border);--sd-color-tabs-overline:var(--color-background-border);--sd-color-tabs-underline:var(--color-background-border)}.sd-tab-content{box-shadow:0 -2px var(--sd-color-tabs-overline),0 1px var(--sd-color-tabs-underline)}.sd-card{box-shadow:0 .1rem .25rem var(--sd-color-shadow),0 0 .0625rem rgba(0,0,0,.1)}.sd-shadow-sm{box-shadow:0 .1rem .25rem var(--sd-color-shadow),0 0 .0625rem rgba(0,0,0,.1)!important}.sd-shadow-md{box-shadow:0 .3rem .75rem var(--sd-color-shadow),0 0 .0625rem rgba(0,0,0,.1)!important}.sd-shadow-lg{box-shadow:0 .6rem 1.5rem var(--sd-color-shadow),0 0 .0625rem rgba(0,0,0,.1)!important}.sd-card-hover:hover{transform:none}.sd-cards-carousel{gap:.25rem;padding:.25rem}body{--tabs--label-text:var(--color-foreground-muted);--tabs--label-text--hover:var(--color-foreground-muted);--tabs--label-text--active:var(--color-brand-content);--tabs--label-text--active--hover:var(--color-brand-content);--tabs--label-background:transparent;--tabs--label-background--hover:transparent;--tabs--label-background--active:transparent;--tabs--label-background--active--hover:transparent;--tabs--padding-x:0.25em;--tabs--margin-x:1em;--tabs--border:var(--color-background-border);--tabs--label-border:transparent;--tabs--label-border--hover:var(--color-foreground-muted);--tabs--label-border--active:var(--color-brand-content);--tabs--label-border--active--hover:var(--color-brand-content)}[role=main] .container{max-width:none;padding-left:0;padding-right:0}.shadow.docutils{border:none;box-shadow:0 .2rem .5rem rgba(0,0,0,.05),0 0 .0625rem rgba(0,0,0,.1)!important}.sphinx-bs .card{background-color:var(--color-background-secondary);color:var(--color-foreground)} -/*# sourceMappingURL=furo-extensions.css.map*/ \ No newline at end of file diff --git a/pulls/1961/_static/styles/furo-extensions.css.map b/pulls/1961/_static/styles/furo-extensions.css.map deleted file mode 100644 index c26eac7f5b..0000000000 --- a/pulls/1961/_static/styles/furo-extensions.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"styles/furo-extensions.css","mappings":"AAGA,2BACE,oFACA,4CAKE,6CAHA,YACA,eAEA,CACA,kDACE,yCAEF,8CACE,sCAEJ,8CACE,kDAEJ,2BAGE,uBACA,cAHA,gBACA,UAEA,CAGA,yCACE,mBAEF,gDAEE,gDADA,YACA,CACA,sDACE,gDACF,yDACE,sCAEJ,+CACE,UACA,qDACE,UAGF,mDACE,eAEJ,yEAEE,4DAEA,mHASE,mBAPA,kBAEA,YADA,oBAGA,aADA,gBAIA,CAEA,qIAEE,WADA,UACA,CAEJ,uGACE,aAEF,iUAGE,cAEF,mHACE,aC1EJ,gCACE,mCAEF,0BAEE,mBAUA,8CACA,YAFA,mCAKA,eAZA,cAIA,YADA,YAYA,iCAdA,YAcA,CAEA,gCAEE,8CADA,gCACA,CAEF,gCAGE,6BADA,mCADA,YAEA,CAEF,kCAEE,cADA,oBACA,CACA,wCACE,cAEJ,8BACE,UCzCN,KAEE,6CAA8C,CAC9C,uDAAwD,CACxD,uDAAwD,CAGxD,iCAAsC,CAGtC,+CAAgD,CAChD,uDAAwD,CACxD,uDAAwD,CACxD,oDAAqD,CACrD,6DAA8D,CAC9D,6DAA8D,CAG9D,uDAAwD,CACxD,yDAA0D,CAC1D,4DAA6D,CAC7D,2DAA4D,CAC5D,8DAA+D,CAC/D,iEAAkE,CAClE,uDAAwD,CACxD,wDAAyD,CAG3D,gBACE,qFAGF,SACE,6EAEF,cACE,uFAEF,cACE,uFAEF,cACE,uFAGF,qBACE,eAEF,mBACE,WACA,eChDF,KACE,gDAAiD,CACjD,uDAAwD,CACxD,qDAAsD,CACtD,4DAA6D,CAC7D,oCAAqC,CACrC,2CAA4C,CAC5C,4CAA6C,CAC7C,mDAAoD,CACpD,wBAAyB,CACzB,oBAAqB,CACrB,6CAA8C,CAC9C,gCAAiC,CACjC,yDAA0D,CAC1D,uDAAwD,CACxD,8DAA+D,CCbjE,uBACE,eACA,eACA,gBAGF,iBACE,YACA,+EAGF,iBACE,mDACA","sources":["webpack:///./src/furo/assets/styles/extensions/_readthedocs.sass","webpack:///./src/furo/assets/styles/extensions/_copybutton.sass","webpack:///./src/furo/assets/styles/extensions/_sphinx-design.sass","webpack:///./src/furo/assets/styles/extensions/_sphinx-inline-tabs.sass","webpack:///./src/furo/assets/styles/extensions/_sphinx-panels.sass"],"sourcesContent":["// This file contains the styles used for tweaking how ReadTheDoc's embedded\n// contents would show up inside the theme.\n\n#furo-sidebar-ad-placement\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal)\n .ethical-sidebar\n // Remove the border and box-shadow.\n border: none\n box-shadow: none\n // Manage the background colors.\n background: var(--color-background-secondary)\n &:hover\n background: var(--color-background-hover)\n // Ensure the text is legible.\n a\n color: var(--color-foreground-primary)\n\n .ethical-callout a\n color: var(--color-foreground-secondary) !important\n\n#furo-readthedocs-versions\n position: static\n width: 100%\n background: transparent\n display: block\n\n // Make the background color fit with the theme's aesthetic.\n .rst-versions\n background: rgb(26, 28, 30)\n\n .rst-current-version\n cursor: unset\n background: var(--color-sidebar-item-background)\n &:hover\n background: var(--color-sidebar-item-background)\n .fa-book\n color: var(--color-foreground-primary)\n\n > .rst-other-versions\n padding: 0\n small\n opacity: 1\n\n .injected\n .rst-versions\n position: unset\n\n &:hover,\n &:focus-within\n box-shadow: 0 0 0 1px var(--color-sidebar-background-border)\n\n .rst-current-version\n // Undo the tweaks done in RTD's CSS\n font-size: inherit\n line-height: inherit\n height: auto\n text-align: right\n padding: 12px\n\n // Match the rest of the body\n background: #1a1c1e\n\n .fa-book\n float: left\n color: white\n\n .fa-caret-down\n display: none\n\n .rst-current-version,\n .rst-other-versions,\n .injected\n display: block\n\n > .rst-current-version\n display: none\n",".highlight\n &:hover button.copybtn\n color: var(--color-code-foreground)\n\n button.copybtn\n // Align things correctly\n align-items: center\n\n height: 1.25em\n width: 1.25em\n\n top: 0.625rem // $code-spacing-vertical\n right: 0.5rem\n\n // Make it look better\n color: var(--color-background-item)\n background-color: var(--color-code-background)\n border: none\n\n // Change to cursor to make it obvious that you can click on it\n cursor: pointer\n\n // Transition smoothly, for aesthetics\n transition: color 300ms, opacity 300ms\n\n &:hover\n color: var(--color-brand-content)\n background-color: var(--color-code-background)\n\n &::after\n display: none\n color: var(--color-code-foreground)\n background-color: transparent\n\n &.success\n transition: color 0ms\n color: #22863a\n &::after\n display: block\n\n svg\n padding: 0\n","body\n // Colors\n --sd-color-primary: var(--color-brand-primary)\n --sd-color-primary-highlight: var(--color-brand-content)\n --sd-color-primary-text: var(--color-background-primary)\n\n // Shadows\n --sd-color-shadow: rgba(0, 0, 0, 0.05)\n\n // Cards\n --sd-color-card-border: var(--color-card-border)\n --sd-color-card-border-hover: var(--color-brand-content)\n --sd-color-card-background: var(--color-card-background)\n --sd-color-card-text: var(--color-foreground-primary)\n --sd-color-card-header: var(--color-card-marginals-background)\n --sd-color-card-footer: var(--color-card-marginals-background)\n\n // Tabs\n --sd-color-tabs-label-active: var(--color-brand-content)\n --sd-color-tabs-label-hover: var(--color-foreground-muted)\n --sd-color-tabs-label-inactive: var(--color-foreground-muted)\n --sd-color-tabs-underline-active: var(--color-brand-content)\n --sd-color-tabs-underline-hover: var(--color-foreground-border)\n --sd-color-tabs-underline-inactive: var(--color-background-border)\n --sd-color-tabs-overline: var(--color-background-border)\n --sd-color-tabs-underline: var(--color-background-border)\n\n// Tabs\n.sd-tab-content\n box-shadow: 0 -2px var(--sd-color-tabs-overline), 0 1px var(--sd-color-tabs-underline)\n\n// Shadows\n.sd-card // Have a shadow by default\n box-shadow: 0 0.1rem 0.25rem var(--sd-color-shadow), 0 0 0.0625rem rgba(0, 0, 0, 0.1)\n\n.sd-shadow-sm\n box-shadow: 0 0.1rem 0.25rem var(--sd-color-shadow), 0 0 0.0625rem rgba(0, 0, 0, 0.1) !important\n\n.sd-shadow-md\n box-shadow: 0 0.3rem 0.75rem var(--sd-color-shadow), 0 0 0.0625rem rgba(0, 0, 0, 0.1) !important\n\n.sd-shadow-lg\n box-shadow: 0 0.6rem 1.5rem var(--sd-color-shadow), 0 0 0.0625rem rgba(0, 0, 0, 0.1) !important\n\n// Cards\n.sd-card-hover:hover // Don't change scale on hover\n transform: none\n\n.sd-cards-carousel // Have a bit of gap in the carousel by default\n gap: 0.25rem\n padding: 0.25rem\n","// This file contains styles to tweak sphinx-inline-tabs to work well with Furo.\n\nbody\n --tabs--label-text: var(--color-foreground-muted)\n --tabs--label-text--hover: var(--color-foreground-muted)\n --tabs--label-text--active: var(--color-brand-content)\n --tabs--label-text--active--hover: var(--color-brand-content)\n --tabs--label-background: transparent\n --tabs--label-background--hover: transparent\n --tabs--label-background--active: transparent\n --tabs--label-background--active--hover: transparent\n --tabs--padding-x: 0.25em\n --tabs--margin-x: 1em\n --tabs--border: var(--color-background-border)\n --tabs--label-border: transparent\n --tabs--label-border--hover: var(--color-foreground-muted)\n --tabs--label-border--active: var(--color-brand-content)\n --tabs--label-border--active--hover: var(--color-brand-content)\n","// This file contains styles to tweak sphinx-panels to work well with Furo.\n\n// sphinx-panels includes Bootstrap 4, which uses .container which can conflict\n// with docutils' `.. container::` directive.\n[role=\"main\"] .container\n max-width: initial\n padding-left: initial\n padding-right: initial\n\n// Make the panels look nicer!\n.shadow.docutils\n border: none\n box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.05), 0 0 0.0625rem rgba(0, 0, 0, 0.1) !important\n\n// Make panel colors respond to dark mode\n.sphinx-bs .card\n background-color: var(--color-background-secondary)\n color: var(--color-foreground)\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/pulls/1961/_static/styles/furo.css b/pulls/1961/_static/styles/furo.css deleted file mode 100644 index 05a56b17f8..0000000000 --- a/pulls/1961/_static/styles/furo.css +++ /dev/null @@ -1,2 +0,0 @@ -/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}@media print{.content-icon-container,.headerlink,.mobile-header,.related-pages{display:none!important}.highlight{border:.1pt solid var(--color-foreground-border)}a,blockquote,dl,ol,p,pre,table,ul{page-break-inside:avoid}caption,figure,h1,h2,h3,h4,h5,h6,img{page-break-after:avoid;page-break-inside:avoid}dl,ol,ul{page-break-before:avoid}}.visually-hidden{height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important;clip:rect(0,0,0,0)!important;background:var(--color-background-primary);border:0!important;color:var(--color-foreground-primary);white-space:nowrap!important}:-moz-focusring{outline:auto}body{--font-stack:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;--font-stack--monospace:"SFMono-Regular",Menlo,Consolas,Monaco,Liberation Mono,Lucida Console,monospace;--font-stack--headings:var(--font-stack);--font-size--normal:100%;--font-size--small:87.5%;--font-size--small--2:81.25%;--font-size--small--3:75%;--font-size--small--4:62.5%;--sidebar-caption-font-size:var(--font-size--small--2);--sidebar-item-font-size:var(--font-size--small);--sidebar-search-input-font-size:var(--font-size--small);--toc-font-size:var(--font-size--small--3);--toc-font-size--mobile:var(--font-size--normal);--toc-title-font-size:var(--font-size--small--4);--admonition-font-size:0.8125rem;--admonition-title-font-size:0.8125rem;--code-font-size:var(--font-size--small--2);--api-font-size:var(--font-size--small);--header-height:calc(var(--sidebar-item-line-height) + var(--sidebar-item-spacing-vertical)*4);--header-padding:0.5rem;--sidebar-tree-space-above:1.5rem;--sidebar-caption-space-above:1rem;--sidebar-item-line-height:1rem;--sidebar-item-spacing-vertical:0.5rem;--sidebar-item-spacing-horizontal:1rem;--sidebar-item-height:calc(var(--sidebar-item-line-height) + var(--sidebar-item-spacing-vertical)*2);--sidebar-expander-width:var(--sidebar-item-height);--sidebar-search-space-above:0.5rem;--sidebar-search-input-spacing-vertical:0.5rem;--sidebar-search-input-spacing-horizontal:0.5rem;--sidebar-search-input-height:1rem;--sidebar-search-icon-size:var(--sidebar-search-input-height);--toc-title-padding:0.25rem 0;--toc-spacing-vertical:1.5rem;--toc-spacing-horizontal:1.5rem;--toc-item-spacing-vertical:0.4rem;--toc-item-spacing-horizontal:1rem;--icon-search:url('data:image/svg+xml;charset=utf-8,');--icon-pencil:url('data:image/svg+xml;charset=utf-8,');--icon-abstract:url('data:image/svg+xml;charset=utf-8,');--icon-info:url('data:image/svg+xml;charset=utf-8,');--icon-flame:url('data:image/svg+xml;charset=utf-8,');--icon-question:url('data:image/svg+xml;charset=utf-8,');--icon-warning:url('data:image/svg+xml;charset=utf-8,');--icon-failure:url('data:image/svg+xml;charset=utf-8,');--icon-spark:url('data:image/svg+xml;charset=utf-8,');--color-admonition-title--caution:#ff9100;--color-admonition-title-background--caution:rgba(255,145,0,.2);--color-admonition-title--warning:#ff9100;--color-admonition-title-background--warning:rgba(255,145,0,.2);--color-admonition-title--danger:#ff5252;--color-admonition-title-background--danger:rgba(255,82,82,.2);--color-admonition-title--attention:#ff5252;--color-admonition-title-background--attention:rgba(255,82,82,.2);--color-admonition-title--error:#ff5252;--color-admonition-title-background--error:rgba(255,82,82,.2);--color-admonition-title--hint:#00c852;--color-admonition-title-background--hint:rgba(0,200,82,.2);--color-admonition-title--tip:#00c852;--color-admonition-title-background--tip:rgba(0,200,82,.2);--color-admonition-title--important:#00bfa5;--color-admonition-title-background--important:rgba(0,191,165,.2);--color-admonition-title--note:#00b0ff;--color-admonition-title-background--note:rgba(0,176,255,.2);--color-admonition-title--seealso:#448aff;--color-admonition-title-background--seealso:rgba(68,138,255,.2);--color-admonition-title--admonition-todo:grey;--color-admonition-title-background--admonition-todo:hsla(0,0%,50%,.2);--color-admonition-title:#651fff;--color-admonition-title-background:rgba(101,31,255,.2);--icon-admonition-default:var(--icon-abstract);--color-topic-title:#14b8a6;--color-topic-title-background:rgba(20,184,166,.2);--icon-topic-default:var(--icon-pencil);--color-problematic:#b30000;--color-foreground-primary:#000;--color-foreground-secondary:#5a5c63;--color-foreground-muted:#6b6f76;--color-foreground-border:#878787;--color-background-primary:#fff;--color-background-secondary:#f8f9fb;--color-background-hover:#efeff4;--color-background-hover--transparent:#efeff400;--color-background-border:#eeebee;--color-background-item:#ccc;--color-announcement-background:#000000dd;--color-announcement-text:#eeebee;--color-brand-primary:#0a4bff;--color-brand-content:#2757dd;--color-brand-visited:#872ee0;--color-api-background:var(--color-background-hover--transparent);--color-api-background-hover:var(--color-background-hover);--color-api-overall:var(--color-foreground-secondary);--color-api-name:var(--color-problematic);--color-api-pre-name:var(--color-problematic);--color-api-paren:var(--color-foreground-secondary);--color-api-keyword:var(--color-foreground-primary);--color-api-added:#21632c;--color-api-added-border:#38a84d;--color-api-changed:#046172;--color-api-changed-border:#06a1bc;--color-api-deprecated:#605706;--color-api-deprecated-border:#f0d90f;--color-api-removed:#b30000;--color-api-removed-border:#ff5c5c;--color-highlight-on-target:#ffc;--color-inline-code-background:var(--color-background-secondary);--color-highlighted-background:#def;--color-highlighted-text:var(--color-foreground-primary);--color-guilabel-background:#ddeeff80;--color-guilabel-border:#bedaf580;--color-guilabel-text:var(--color-foreground-primary);--color-admonition-background:transparent;--color-table-header-background:var(--color-background-secondary);--color-table-border:var(--color-background-border);--color-card-border:var(--color-background-secondary);--color-card-background:transparent;--color-card-marginals-background:var(--color-background-secondary);--color-header-background:var(--color-background-primary);--color-header-border:var(--color-background-border);--color-header-text:var(--color-foreground-primary);--color-sidebar-background:var(--color-background-secondary);--color-sidebar-background-border:var(--color-background-border);--color-sidebar-brand-text:var(--color-foreground-primary);--color-sidebar-caption-text:var(--color-foreground-muted);--color-sidebar-link-text:var(--color-foreground-secondary);--color-sidebar-link-text--top-level:var(--color-brand-primary);--color-sidebar-item-background:var(--color-sidebar-background);--color-sidebar-item-background--current:var( --color-sidebar-item-background );--color-sidebar-item-background--hover:linear-gradient(90deg,var(--color-background-hover--transparent) 0%,var(--color-background-hover) var(--sidebar-item-spacing-horizontal),var(--color-background-hover) 100%);--color-sidebar-item-expander-background:transparent;--color-sidebar-item-expander-background--hover:var( --color-background-hover );--color-sidebar-search-text:var(--color-foreground-primary);--color-sidebar-search-background:var(--color-background-secondary);--color-sidebar-search-background--focus:var(--color-background-primary);--color-sidebar-search-border:var(--color-background-border);--color-sidebar-search-icon:var(--color-foreground-muted);--color-toc-background:var(--color-background-primary);--color-toc-title-text:var(--color-foreground-muted);--color-toc-item-text:var(--color-foreground-secondary);--color-toc-item-text--hover:var(--color-foreground-primary);--color-toc-item-text--active:var(--color-brand-primary);--color-content-foreground:var(--color-foreground-primary);--color-content-background:transparent;--color-link:var(--color-brand-content);--color-link-underline:var(--color-background-border);--color-link--hover:var(--color-brand-content);--color-link-underline--hover:var(--color-foreground-border);--color-link--visited:var(--color-brand-visited);--color-link-underline--visited:var(--color-background-border);--color-link--visited--hover:var(--color-brand-visited);--color-link-underline--visited--hover:var(--color-foreground-border)}.only-light{display:block!important}html body .only-dark{display:none!important}@media not print{body[data-theme=dark]{--color-problematic:#ee5151;--color-foreground-primary:#cfd0d0;--color-foreground-secondary:#9ca0a5;--color-foreground-muted:#81868d;--color-foreground-border:#666;--color-background-primary:#131416;--color-background-secondary:#1a1c1e;--color-background-hover:#1e2124;--color-background-hover--transparent:#1e212400;--color-background-border:#303335;--color-background-item:#444;--color-announcement-background:#000000dd;--color-announcement-text:#eeebee;--color-brand-primary:#3d94ff;--color-brand-content:#5ca5ff;--color-brand-visited:#b27aeb;--color-highlighted-background:#083563;--color-guilabel-background:#08356380;--color-guilabel-border:#13395f80;--color-api-keyword:var(--color-foreground-secondary);--color-highlight-on-target:#330;--color-api-added:#3db854;--color-api-added-border:#267334;--color-api-changed:#09b0ce;--color-api-changed-border:#056d80;--color-api-deprecated:#b1a10b;--color-api-deprecated-border:#6e6407;--color-api-removed:#ff7575;--color-api-removed-border:#b03b3b;--color-admonition-background:#18181a;--color-card-border:var(--color-background-secondary);--color-card-background:#18181a;--color-card-marginals-background:var(--color-background-hover)}html body[data-theme=dark] .only-light{display:none!important}body[data-theme=dark] .only-dark{display:block!important}@media(prefers-color-scheme:dark){body:not([data-theme=light]){--color-problematic:#ee5151;--color-foreground-primary:#cfd0d0;--color-foreground-secondary:#9ca0a5;--color-foreground-muted:#81868d;--color-foreground-border:#666;--color-background-primary:#131416;--color-background-secondary:#1a1c1e;--color-background-hover:#1e2124;--color-background-hover--transparent:#1e212400;--color-background-border:#303335;--color-background-item:#444;--color-announcement-background:#000000dd;--color-announcement-text:#eeebee;--color-brand-primary:#3d94ff;--color-brand-content:#5ca5ff;--color-brand-visited:#b27aeb;--color-highlighted-background:#083563;--color-guilabel-background:#08356380;--color-guilabel-border:#13395f80;--color-api-keyword:var(--color-foreground-secondary);--color-highlight-on-target:#330;--color-api-added:#3db854;--color-api-added-border:#267334;--color-api-changed:#09b0ce;--color-api-changed-border:#056d80;--color-api-deprecated:#b1a10b;--color-api-deprecated-border:#6e6407;--color-api-removed:#ff7575;--color-api-removed-border:#b03b3b;--color-admonition-background:#18181a;--color-card-border:var(--color-background-secondary);--color-card-background:#18181a;--color-card-marginals-background:var(--color-background-hover)}html body:not([data-theme=light]) .only-light{display:none!important}body:not([data-theme=light]) .only-dark{display:block!important}}}body[data-theme=auto] .theme-toggle svg.theme-icon-when-auto-light{display:block}@media(prefers-color-scheme:dark){body[data-theme=auto] .theme-toggle svg.theme-icon-when-auto-dark{display:block}body[data-theme=auto] .theme-toggle svg.theme-icon-when-auto-light{display:none}}body[data-theme=dark] .theme-toggle svg.theme-icon-when-dark,body[data-theme=light] .theme-toggle svg.theme-icon-when-light{display:block}body{font-family:var(--font-stack)}code,kbd,pre,samp{font-family:var(--font-stack--monospace)}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}article{line-height:1.5}h1,h2,h3,h4,h5,h6{border-radius:.5rem;font-family:var(--font-stack--headings);font-weight:700;line-height:1.25;margin:.5rem -.5rem;padding-left:.5rem;padding-right:.5rem}h1+p,h2+p,h3+p,h4+p,h5+p,h6+p{margin-top:0}h1{font-size:2.5em;margin-bottom:1rem}h1,h2{margin-top:1.75rem}h2{font-size:2em}h3{font-size:1.5em}h4{font-size:1.25em}h5{font-size:1.125em}h6{font-size:1em}small{font-size:80%;opacity:75%}p{margin-bottom:.75rem;margin-top:.5rem}hr.docutils{background-color:var(--color-background-border);border:0;height:1px;margin:2rem 0;padding:0}.centered{text-align:center}a{color:var(--color-link);text-decoration:underline;text-decoration-color:var(--color-link-underline)}a:visited{color:var(--color-link--visited);text-decoration-color:var(--color-link-underline--visited)}a:visited:hover{color:var(--color-link--visited--hover);text-decoration-color:var(--color-link-underline--visited--hover)}a:hover{color:var(--color-link--hover);text-decoration-color:var(--color-link-underline--hover)}a.muted-link{color:inherit}a.muted-link:hover{color:var(--color-link--hover);text-decoration-color:var(--color-link-underline--hover)}a.muted-link:hover:visited{color:var(--color-link--visited--hover);text-decoration-color:var(--color-link-underline--visited--hover)}html{overflow-x:hidden;overflow-y:scroll;scroll-behavior:smooth}.sidebar-scroll,.toc-scroll,article[role=main] *{scrollbar-color:var(--color-foreground-border) transparent;scrollbar-width:thin}.sidebar-scroll::-webkit-scrollbar,.toc-scroll::-webkit-scrollbar,article[role=main] ::-webkit-scrollbar{height:.25rem;width:.25rem}.sidebar-scroll::-webkit-scrollbar-thumb,.toc-scroll::-webkit-scrollbar-thumb,article[role=main] ::-webkit-scrollbar-thumb{background-color:var(--color-foreground-border);border-radius:.125rem}body,html{height:100%}.skip-to-content,body,html{background:var(--color-background-primary);color:var(--color-foreground-primary)}.skip-to-content{border-radius:1rem;left:.25rem;padding:1rem;position:fixed;top:.25rem;transform:translateY(-200%);transition:transform .3s ease-in-out;z-index:40}.skip-to-content:focus-within{transform:translateY(0)}article{background:var(--color-content-background);color:var(--color-content-foreground);overflow-wrap:break-word}.page{display:flex;min-height:100%}.mobile-header{background-color:var(--color-header-background);border-bottom:1px solid var(--color-header-border);color:var(--color-header-text);display:none;height:var(--header-height);width:100%;z-index:10}.mobile-header.scrolled{border-bottom:none;box-shadow:0 0 .2rem rgba(0,0,0,.1),0 .2rem .4rem rgba(0,0,0,.2)}.mobile-header .header-center a{color:var(--color-header-text);text-decoration:none}.main{display:flex;flex:1}.sidebar-drawer{background:var(--color-sidebar-background);border-right:1px solid var(--color-sidebar-background-border);box-sizing:border-box;display:flex;justify-content:flex-end;min-width:15em;width:calc(50% - 26em)}.sidebar-container,.toc-drawer{box-sizing:border-box;width:15em}.toc-drawer{background:var(--color-toc-background);padding-right:1rem}.sidebar-sticky,.toc-sticky{display:flex;flex-direction:column;height:min(100%,100vh);height:100vh;position:sticky;top:0}.sidebar-scroll,.toc-scroll{flex-grow:1;flex-shrink:1;overflow:auto;scroll-behavior:smooth}.content{display:flex;flex-direction:column;justify-content:space-between;padding:0 3em;width:46em}.icon{display:inline-block;height:1rem;width:1rem}.icon svg{height:100%;width:100%}.announcement{align-items:center;background-color:var(--color-announcement-background);color:var(--color-announcement-text);display:flex;height:var(--header-height);overflow-x:auto}.announcement+.page{min-height:calc(100% - var(--header-height))}.announcement-content{box-sizing:border-box;min-width:100%;padding:.5rem;text-align:center;white-space:nowrap}.announcement-content a{color:var(--color-announcement-text);text-decoration-color:var(--color-announcement-text)}.announcement-content a:hover{color:var(--color-announcement-text);text-decoration-color:var(--color-link--hover)}.no-js .theme-toggle-container{display:none}.theme-toggle-container{display:flex}.theme-toggle{background:transparent;border:none;cursor:pointer;display:flex;padding:0}.theme-toggle svg{color:var(--color-foreground-primary);display:none;height:1.25rem;width:1.25rem}.theme-toggle-header{align-items:center;display:flex;justify-content:center}.nav-overlay-icon,.toc-overlay-icon{cursor:pointer;display:none}.nav-overlay-icon .icon,.toc-overlay-icon .icon{color:var(--color-foreground-secondary);height:1.5rem;width:1.5rem}.nav-overlay-icon,.toc-header-icon{align-items:center;justify-content:center}.toc-content-icon{height:1.5rem;width:1.5rem}.content-icon-container{display:flex;float:right;gap:.5rem;margin-bottom:1rem;margin-left:1rem;margin-top:1.5rem}.content-icon-container .edit-this-page svg,.content-icon-container .view-this-page svg{color:inherit;height:1.25rem;width:1.25rem}.sidebar-toggle{display:none;position:absolute}.sidebar-toggle[name=__toc]{left:20px}.sidebar-toggle:checked{left:40px}.overlay{background-color:rgba(0,0,0,.54);height:0;opacity:0;position:fixed;top:0;transition:width 0ms,height 0ms,opacity .25s ease-out;width:0}.sidebar-overlay{z-index:20}.toc-overlay{z-index:40}.sidebar-drawer{transition:left .25s ease-in-out;z-index:30}.toc-drawer{transition:right .25s ease-in-out;z-index:50}#__navigation:checked~.sidebar-overlay{height:100%;opacity:1;width:100%}#__navigation:checked~.page .sidebar-drawer{left:0;top:0}#__toc:checked~.toc-overlay{height:100%;opacity:1;width:100%}#__toc:checked~.page .toc-drawer{right:0;top:0}.back-to-top{background:var(--color-background-primary);border-radius:1rem;box-shadow:0 .2rem .5rem rgba(0,0,0,.05),0 0 1px 0 hsla(220,9%,46%,.502);display:none;font-size:.8125rem;left:0;margin-left:50%;padding:.5rem .75rem .5rem .5rem;position:fixed;text-decoration:none;top:1rem;transform:translateX(-50%);z-index:10}.back-to-top svg{height:1rem;width:1rem;fill:currentColor;display:inline-block}.back-to-top span{margin-left:.25rem}.show-back-to-top .back-to-top{align-items:center;display:flex}@media(min-width:97em){html{font-size:110%}}@media(max-width:82em){.toc-content-icon{display:flex}.toc-drawer{border-left:1px solid var(--color-background-muted);height:100vh;position:fixed;right:-15em;top:0}.toc-tree{border-left:none;font-size:var(--toc-font-size--mobile)}.sidebar-drawer{width:calc(50% - 18.5em)}}@media(max-width:67em){.content{margin-left:auto;margin-right:auto;padding:0 1em}}@media(max-width:63em){.nav-overlay-icon{display:flex}.sidebar-drawer{height:100vh;left:-15em;position:fixed;top:0;width:15em}.theme-toggle-header,.toc-header-icon{display:flex}.theme-toggle-content,.toc-content-icon{display:none}.mobile-header{align-items:center;display:flex;justify-content:space-between;position:sticky;top:0}.mobile-header .header-left,.mobile-header .header-right{display:flex;height:var(--header-height);padding:0 var(--header-padding)}.mobile-header .header-left label,.mobile-header .header-right label{height:100%;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%}.nav-overlay-icon .icon,.theme-toggle svg{height:1.5rem;width:1.5rem}:target{scroll-margin-top:calc(var(--header-height) + 2.5rem)}.back-to-top{top:calc(var(--header-height) + .5rem)}.page{flex-direction:column;justify-content:center}}@media(max-width:48em){.content{overflow-x:auto;width:100%}}@media(max-width:46em){article[role=main] aside.sidebar{float:none;margin:1rem 0;width:100%}}.admonition,.topic{background:var(--color-admonition-background);border-radius:.2rem;box-shadow:0 .2rem .5rem rgba(0,0,0,.05),0 0 .0625rem rgba(0,0,0,.1);font-size:var(--admonition-font-size);margin:1rem auto;overflow:hidden;padding:0 .5rem .5rem;page-break-inside:avoid}.admonition>:nth-child(2),.topic>:nth-child(2){margin-top:0}.admonition>:last-child,.topic>:last-child{margin-bottom:0}.admonition p.admonition-title,p.topic-title{font-size:var(--admonition-title-font-size);font-weight:500;line-height:1.3;margin:0 -.5rem .5rem;padding:.4rem .5rem .4rem 2rem;position:relative}.admonition p.admonition-title:before,p.topic-title:before{content:"";height:1rem;left:.5rem;position:absolute;width:1rem}p.admonition-title{background-color:var(--color-admonition-title-background)}p.admonition-title:before{background-color:var(--color-admonition-title);-webkit-mask-image:var(--icon-admonition-default);mask-image:var(--icon-admonition-default);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}p.topic-title{background-color:var(--color-topic-title-background)}p.topic-title:before{background-color:var(--color-topic-title);-webkit-mask-image:var(--icon-topic-default);mask-image:var(--icon-topic-default);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.admonition{border-left:.2rem solid var(--color-admonition-title)}.admonition.caution{border-left-color:var(--color-admonition-title--caution)}.admonition.caution>.admonition-title{background-color:var(--color-admonition-title-background--caution)}.admonition.caution>.admonition-title:before{background-color:var(--color-admonition-title--caution);-webkit-mask-image:var(--icon-spark);mask-image:var(--icon-spark)}.admonition.warning{border-left-color:var(--color-admonition-title--warning)}.admonition.warning>.admonition-title{background-color:var(--color-admonition-title-background--warning)}.admonition.warning>.admonition-title:before{background-color:var(--color-admonition-title--warning);-webkit-mask-image:var(--icon-warning);mask-image:var(--icon-warning)}.admonition.danger{border-left-color:var(--color-admonition-title--danger)}.admonition.danger>.admonition-title{background-color:var(--color-admonition-title-background--danger)}.admonition.danger>.admonition-title:before{background-color:var(--color-admonition-title--danger);-webkit-mask-image:var(--icon-spark);mask-image:var(--icon-spark)}.admonition.attention{border-left-color:var(--color-admonition-title--attention)}.admonition.attention>.admonition-title{background-color:var(--color-admonition-title-background--attention)}.admonition.attention>.admonition-title:before{background-color:var(--color-admonition-title--attention);-webkit-mask-image:var(--icon-warning);mask-image:var(--icon-warning)}.admonition.error{border-left-color:var(--color-admonition-title--error)}.admonition.error>.admonition-title{background-color:var(--color-admonition-title-background--error)}.admonition.error>.admonition-title:before{background-color:var(--color-admonition-title--error);-webkit-mask-image:var(--icon-failure);mask-image:var(--icon-failure)}.admonition.hint{border-left-color:var(--color-admonition-title--hint)}.admonition.hint>.admonition-title{background-color:var(--color-admonition-title-background--hint)}.admonition.hint>.admonition-title:before{background-color:var(--color-admonition-title--hint);-webkit-mask-image:var(--icon-question);mask-image:var(--icon-question)}.admonition.tip{border-left-color:var(--color-admonition-title--tip)}.admonition.tip>.admonition-title{background-color:var(--color-admonition-title-background--tip)}.admonition.tip>.admonition-title:before{background-color:var(--color-admonition-title--tip);-webkit-mask-image:var(--icon-info);mask-image:var(--icon-info)}.admonition.important{border-left-color:var(--color-admonition-title--important)}.admonition.important>.admonition-title{background-color:var(--color-admonition-title-background--important)}.admonition.important>.admonition-title:before{background-color:var(--color-admonition-title--important);-webkit-mask-image:var(--icon-flame);mask-image:var(--icon-flame)}.admonition.note{border-left-color:var(--color-admonition-title--note)}.admonition.note>.admonition-title{background-color:var(--color-admonition-title-background--note)}.admonition.note>.admonition-title:before{background-color:var(--color-admonition-title--note);-webkit-mask-image:var(--icon-pencil);mask-image:var(--icon-pencil)}.admonition.seealso{border-left-color:var(--color-admonition-title--seealso)}.admonition.seealso>.admonition-title{background-color:var(--color-admonition-title-background--seealso)}.admonition.seealso>.admonition-title:before{background-color:var(--color-admonition-title--seealso);-webkit-mask-image:var(--icon-info);mask-image:var(--icon-info)}.admonition.admonition-todo{border-left-color:var(--color-admonition-title--admonition-todo)}.admonition.admonition-todo>.admonition-title{background-color:var(--color-admonition-title-background--admonition-todo)}.admonition.admonition-todo>.admonition-title:before{background-color:var(--color-admonition-title--admonition-todo);-webkit-mask-image:var(--icon-pencil);mask-image:var(--icon-pencil)}.admonition-todo>.admonition-title{text-transform:uppercase}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dd{margin-left:2rem}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dd>:first-child{margin-top:.125rem}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list,dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dd>:last-child{margin-bottom:.75rem}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list>dt{font-size:var(--font-size--small);text-transform:uppercase}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list dd:empty{margin-bottom:.5rem}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list dd>ul{margin-left:-1.2rem}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list dd>ul>li>p:nth-child(2){margin-top:0}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list dd>ul>li>p+p:last-child:empty{margin-bottom:0;margin-top:0}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt{color:var(--color-api-overall)}.sig:not(.sig-inline){background:var(--color-api-background);border-radius:.25rem;font-family:var(--font-stack--monospace);font-size:var(--api-font-size);font-weight:700;margin-left:-.25rem;margin-right:-.25rem;padding:.25rem .5rem .25rem 3em;text-indent:-2.5em;transition:background .1s ease-out}.sig:not(.sig-inline):hover{background:var(--color-api-background-hover)}.sig:not(.sig-inline) a.reference .viewcode-link{font-weight:400;width:4.25rem}em.property{font-style:normal}em.property:first-child{color:var(--color-api-keyword)}.sig-name{color:var(--color-api-name)}.sig-prename{color:var(--color-api-pre-name);font-weight:400}.sig-paren{color:var(--color-api-paren)}.sig-param{font-style:normal}div.deprecated,div.versionadded,div.versionchanged,div.versionremoved{border-left:.1875rem solid;border-radius:.125rem;padding-left:.75rem}div.deprecated p,div.versionadded p,div.versionchanged p,div.versionremoved p{margin-bottom:.125rem;margin-top:.125rem}div.versionadded{border-color:var(--color-api-added-border)}div.versionadded .versionmodified{color:var(--color-api-added)}div.versionchanged{border-color:var(--color-api-changed-border)}div.versionchanged .versionmodified{color:var(--color-api-changed)}div.deprecated{border-color:var(--color-api-deprecated-border)}div.deprecated .versionmodified{color:var(--color-api-deprecated)}div.versionremoved{border-color:var(--color-api-removed-border)}div.versionremoved .versionmodified{color:var(--color-api-removed)}.viewcode-back,.viewcode-link{float:right;text-align:right}.line-block{margin-bottom:.75rem;margin-top:.5rem}.line-block .line-block{margin-bottom:0;margin-top:0;padding-left:1rem}.code-block-caption,article p.caption,table>caption{font-size:var(--font-size--small);text-align:center}.toctree-wrapper.compound .caption,.toctree-wrapper.compound :not(.caption)>.caption-text{font-size:var(--font-size--small);margin-bottom:0;text-align:initial;text-transform:uppercase}.toctree-wrapper.compound>ul{margin-bottom:0;margin-top:0}.sig-inline,code.literal{background:var(--color-inline-code-background);border-radius:.2em;font-size:var(--font-size--small--2);padding:.1em .2em}pre.literal-block .sig-inline,pre.literal-block code.literal{font-size:inherit;padding:0}p .sig-inline,p code.literal{border:1px solid var(--color-background-border)}.sig-inline{font-family:var(--font-stack--monospace)}div[class*=" highlight-"],div[class^=highlight-]{display:flex;margin:1em 0}div[class*=" highlight-"] .table-wrapper,div[class^=highlight-] .table-wrapper,pre{margin:0;padding:0}pre{overflow:auto}article[role=main] .highlight pre{line-height:1.5}.highlight pre,pre.literal-block{font-size:var(--code-font-size);padding:.625rem .875rem}pre.literal-block{background-color:var(--color-code-background);border-radius:.2rem;color:var(--color-code-foreground);margin-bottom:1rem;margin-top:1rem}.highlight{border-radius:.2rem;width:100%}.highlight .gp,.highlight span.linenos{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.highlight .hll{display:block;margin-left:-.875rem;margin-right:-.875rem;padding-left:.875rem;padding-right:.875rem}.code-block-caption{background-color:var(--color-code-background);border-bottom:1px solid;border-radius:.25rem;border-bottom-left-radius:0;border-bottom-right-radius:0;border-color:var(--color-background-border);color:var(--color-code-foreground);display:flex;font-weight:300;padding:.625rem .875rem}.code-block-caption+div[class]{margin-top:0}.code-block-caption+div[class] pre{border-top-left-radius:0;border-top-right-radius:0}.highlighttable{display:block;width:100%}.highlighttable tbody{display:block}.highlighttable tr{display:flex}.highlighttable td.linenos{background-color:var(--color-code-background);border-bottom-left-radius:.2rem;border-top-left-radius:.2rem;color:var(--color-code-foreground);padding:.625rem 0 .625rem .875rem}.highlighttable .linenodiv{box-shadow:-.0625rem 0 var(--color-foreground-border) inset;font-size:var(--code-font-size);padding-right:.875rem}.highlighttable td.code{display:block;flex:1;overflow:hidden;padding:0}.highlighttable td.code .highlight{border-bottom-left-radius:0;border-top-left-radius:0}.highlight span.linenos{box-shadow:-.0625rem 0 var(--color-foreground-border) inset;display:inline-block;margin-right:.875rem;padding-left:0;padding-right:.875rem}.footnote-reference{font-size:var(--font-size--small--4);vertical-align:super}dl.footnote.brackets{color:var(--color-foreground-secondary);display:grid;font-size:var(--font-size--small);grid-template-columns:max-content auto}dl.footnote.brackets dt{margin:0}dl.footnote.brackets dt>.fn-backref{margin-left:.25rem}dl.footnote.brackets dt:after{content:":"}dl.footnote.brackets dt .brackets:before{content:"["}dl.footnote.brackets dt .brackets:after{content:"]"}dl.footnote.brackets dd{margin:0;padding:0 1rem}aside.footnote{color:var(--color-foreground-secondary);font-size:var(--font-size--small)}aside.footnote>span,div.citation>span{float:left;font-weight:500;padding-right:.25rem}aside.footnote>:not(span),div.citation>p{margin-left:2rem}img{box-sizing:border-box;height:auto;max-width:100%}article .figure,article figure{border-radius:.2rem;margin:0}article .figure :last-child,article figure :last-child{margin-bottom:0}article .align-left{clear:left;float:left;margin:0 1rem 1rem}article .align-right{clear:right;float:right;margin:0 1rem 1rem}article .align-center,article .align-default{display:block;margin-left:auto;margin-right:auto;text-align:center}article table.align-default{display:table;text-align:initial}.domainindex-jumpbox,.genindex-jumpbox{border-bottom:1px solid var(--color-background-border);border-top:1px solid var(--color-background-border);padding:.25rem}.domainindex-section h2,.genindex-section h2{margin-bottom:.5rem;margin-top:.75rem}.domainindex-section ul,.genindex-section ul{margin-bottom:0;margin-top:0}ol,ul{margin-bottom:1rem;margin-top:1rem;padding-left:1.2rem}ol li>p:first-child,ul li>p:first-child{margin-bottom:.25rem;margin-top:.25rem}ol li>p:last-child,ul li>p:last-child{margin-top:.25rem}ol li>ol,ol li>ul,ul li>ol,ul li>ul{margin-bottom:.5rem;margin-top:.5rem}ol.arabic{list-style:decimal}ol.loweralpha{list-style:lower-alpha}ol.upperalpha{list-style:upper-alpha}ol.lowerroman{list-style:lower-roman}ol.upperroman{list-style:upper-roman}.simple li>ol,.simple li>ul,.toctree-wrapper li>ol,.toctree-wrapper li>ul{margin-bottom:0;margin-top:0}.field-list dt,.option-list dt,dl.footnote dt,dl.glossary dt,dl.simple dt,dl:not([class]) dt{font-weight:500;margin-top:.25rem}.field-list dt+dt,.option-list dt+dt,dl.footnote dt+dt,dl.glossary dt+dt,dl.simple dt+dt,dl:not([class]) dt+dt{margin-top:0}.field-list dt .classifier:before,.option-list dt .classifier:before,dl.footnote dt .classifier:before,dl.glossary dt .classifier:before,dl.simple dt .classifier:before,dl:not([class]) dt .classifier:before{content:":";margin-left:.2rem;margin-right:.2rem}.field-list dd ul,.field-list dd>p:first-child,.option-list dd ul,.option-list dd>p:first-child,dl.footnote dd ul,dl.footnote dd>p:first-child,dl.glossary dd ul,dl.glossary dd>p:first-child,dl.simple dd ul,dl.simple dd>p:first-child,dl:not([class]) dd ul,dl:not([class]) dd>p:first-child{margin-top:.125rem}.field-list dd ul,.option-list dd ul,dl.footnote dd ul,dl.glossary dd ul,dl.simple dd ul,dl:not([class]) dd ul{margin-bottom:.125rem}.math-wrapper{overflow-x:auto;width:100%}div.math{position:relative;text-align:center}div.math .headerlink,div.math:focus .headerlink{display:none}div.math:hover .headerlink{display:inline-block}div.math span.eqno{position:absolute;right:.5rem;top:50%;transform:translateY(-50%);z-index:1}abbr[title]{cursor:help}.problematic{color:var(--color-problematic)}kbd:not(.compound){background-color:var(--color-background-secondary);border:1px solid var(--color-foreground-border);border-radius:.2rem;box-shadow:0 .0625rem 0 rgba(0,0,0,.2),inset 0 0 0 .125rem var(--color-background-primary);color:var(--color-foreground-primary);display:inline-block;font-size:var(--font-size--small--3);margin:0 .2rem;padding:0 .2rem;vertical-align:text-bottom}blockquote{background:var(--color-background-secondary);border-left:4px solid var(--color-background-border);margin-left:0;margin-right:0;padding:.5rem 1rem}blockquote .attribution{font-weight:600;text-align:right}blockquote.highlights,blockquote.pull-quote{font-size:1.25em}blockquote.epigraph,blockquote.pull-quote{border-left-width:0;border-radius:.5rem}blockquote.highlights{background:transparent;border-left-width:0}p .reference img{vertical-align:middle}p.rubric{font-size:1.125em;font-weight:700;line-height:1.25}dd p.rubric{font-size:var(--font-size--small);font-weight:inherit;line-height:inherit;text-transform:uppercase}article .sidebar{background-color:var(--color-background-secondary);border:1px solid var(--color-background-border);border-radius:.2rem;clear:right;float:right;margin-left:1rem;margin-right:0;width:30%}article .sidebar>*{padding-left:1rem;padding-right:1rem}article .sidebar>ol,article .sidebar>ul{padding-left:2.2rem}article .sidebar .sidebar-title{border-bottom:1px solid var(--color-background-border);font-weight:500;margin:0;padding:.5rem 1rem}[role=main] .table-wrapper.container{margin-bottom:.5rem;margin-top:1rem;overflow-x:auto;padding:.2rem .2rem .75rem;width:100%}table.docutils{border-collapse:collapse;border-radius:.2rem;border-spacing:0;box-shadow:0 .2rem .5rem rgba(0,0,0,.05),0 0 .0625rem rgba(0,0,0,.1)}table.docutils th{background:var(--color-table-header-background)}table.docutils td,table.docutils th{border-bottom:1px solid var(--color-table-border);border-left:1px solid var(--color-table-border);border-right:1px solid var(--color-table-border);padding:0 .25rem}table.docutils td p,table.docutils th p{margin:.25rem}table.docutils td:first-child,table.docutils th:first-child{border-left:none}table.docutils td:last-child,table.docutils th:last-child{border-right:none}table.docutils td.text-left,table.docutils th.text-left{text-align:left}table.docutils td.text-right,table.docutils th.text-right{text-align:right}table.docutils td.text-center,table.docutils th.text-center{text-align:center}:target{scroll-margin-top:2.5rem}@media(max-width:67em){:target{scroll-margin-top:calc(2.5rem + var(--header-height))}section>span:target{scroll-margin-top:calc(2.8rem + var(--header-height))}}.headerlink{font-weight:100;-webkit-user-select:none;-moz-user-select:none;user-select:none}.code-block-caption>.headerlink,dl dt>.headerlink,figcaption p>.headerlink,h1>.headerlink,h2>.headerlink,h3>.headerlink,h4>.headerlink,h5>.headerlink,h6>.headerlink,p.caption>.headerlink,table>caption>.headerlink{margin-left:.5rem;visibility:hidden}.code-block-caption:hover>.headerlink,dl dt:hover>.headerlink,figcaption p:hover>.headerlink,h1:hover>.headerlink,h2:hover>.headerlink,h3:hover>.headerlink,h4:hover>.headerlink,h5:hover>.headerlink,h6:hover>.headerlink,p.caption:hover>.headerlink,table>caption:hover>.headerlink{visibility:visible}.code-block-caption>.toc-backref,dl dt>.toc-backref,figcaption p>.toc-backref,h1>.toc-backref,h2>.toc-backref,h3>.toc-backref,h4>.toc-backref,h5>.toc-backref,h6>.toc-backref,p.caption>.toc-backref,table>caption>.toc-backref{color:inherit;text-decoration-line:none}figure:hover>figcaption>p>.headerlink,table:hover>caption>.headerlink{visibility:visible}:target>h1:first-of-type,:target>h2:first-of-type,:target>h3:first-of-type,:target>h4:first-of-type,:target>h5:first-of-type,:target>h6:first-of-type,span:target~h1:first-of-type,span:target~h2:first-of-type,span:target~h3:first-of-type,span:target~h4:first-of-type,span:target~h5:first-of-type,span:target~h6:first-of-type{background-color:var(--color-highlight-on-target)}:target>h1:first-of-type code.literal,:target>h2:first-of-type code.literal,:target>h3:first-of-type code.literal,:target>h4:first-of-type code.literal,:target>h5:first-of-type code.literal,:target>h6:first-of-type code.literal,span:target~h1:first-of-type code.literal,span:target~h2:first-of-type code.literal,span:target~h3:first-of-type code.literal,span:target~h4:first-of-type code.literal,span:target~h5:first-of-type code.literal,span:target~h6:first-of-type code.literal{background-color:transparent}.literal-block-wrapper:target .code-block-caption,.this-will-duplicate-information-and-it-is-still-useful-here li :target,figure:target,table:target>caption{background-color:var(--color-highlight-on-target)}dt:target{background-color:var(--color-highlight-on-target)!important}.footnote-reference:target,.footnote>dt:target+dd{background-color:var(--color-highlight-on-target)}.guilabel{background-color:var(--color-guilabel-background);border:1px solid var(--color-guilabel-border);border-radius:.5em;color:var(--color-guilabel-text);font-size:.9em;padding:0 .3em}footer{display:flex;flex-direction:column;font-size:var(--font-size--small);margin-top:2rem}.bottom-of-page{align-items:center;border-top:1px solid var(--color-background-border);color:var(--color-foreground-secondary);display:flex;justify-content:space-between;line-height:1.5;margin-top:1rem;padding-bottom:1rem;padding-top:1rem}@media(max-width:46em){.bottom-of-page{flex-direction:column-reverse;gap:.25rem;text-align:center}}.bottom-of-page .left-details{font-size:var(--font-size--small)}.bottom-of-page .right-details{display:flex;flex-direction:column;gap:.25rem;text-align:right}.bottom-of-page .icons{display:flex;font-size:1rem;gap:.25rem;justify-content:flex-end}.bottom-of-page .icons a{text-decoration:none}.bottom-of-page .icons img,.bottom-of-page .icons svg{font-size:1.125rem;height:1em;width:1em}.related-pages a{align-items:center;display:flex;text-decoration:none}.related-pages a:hover .page-info .title{color:var(--color-link);text-decoration:underline;text-decoration-color:var(--color-link-underline)}.related-pages a svg.furo-related-icon,.related-pages a svg.furo-related-icon>use{color:var(--color-foreground-border);flex-shrink:0;height:.75rem;margin:0 .5rem;width:.75rem}.related-pages a.next-page{clear:right;float:right;max-width:50%;text-align:right}.related-pages a.prev-page{clear:left;float:left;max-width:50%}.related-pages a.prev-page svg{transform:rotate(180deg)}.page-info{display:flex;flex-direction:column;overflow-wrap:anywhere}.next-page .page-info{align-items:flex-end}.page-info .context{align-items:center;color:var(--color-foreground-muted);display:flex;font-size:var(--font-size--small);padding-bottom:.1rem;text-decoration:none}ul.search{list-style:none;padding-left:0}ul.search li{border-bottom:1px solid var(--color-background-border);padding:1rem 0}[role=main] .highlighted{background-color:var(--color-highlighted-background);color:var(--color-highlighted-text)}.sidebar-brand{display:flex;flex-direction:column;flex-shrink:0;padding:var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal);text-decoration:none}.sidebar-brand-text{color:var(--color-sidebar-brand-text);font-size:1.5rem;overflow-wrap:break-word}.sidebar-brand-text,.sidebar-logo-container{margin:var(--sidebar-item-spacing-vertical) 0}.sidebar-logo{display:block;margin:0 auto;max-width:100%}.sidebar-search-container{align-items:center;background:var(--color-sidebar-search-background);display:flex;margin-top:var(--sidebar-search-space-above);position:relative}.sidebar-search-container:focus-within,.sidebar-search-container:hover{background:var(--color-sidebar-search-background--focus)}.sidebar-search-container:before{background-color:var(--color-sidebar-search-icon);content:"";height:var(--sidebar-search-icon-size);left:var(--sidebar-item-spacing-horizontal);-webkit-mask-image:var(--icon-search);mask-image:var(--icon-search);position:absolute;width:var(--sidebar-search-icon-size)}.sidebar-search{background:transparent;border:none;border-bottom:1px solid var(--color-sidebar-search-border);border-top:1px solid var(--color-sidebar-search-border);box-sizing:border-box;color:var(--color-sidebar-search-foreground);padding:var(--sidebar-search-input-spacing-vertical) var(--sidebar-search-input-spacing-horizontal) var(--sidebar-search-input-spacing-vertical) calc(var(--sidebar-item-spacing-horizontal) + var(--sidebar-search-input-spacing-horizontal) + var(--sidebar-search-icon-size));width:100%;z-index:10}.sidebar-search:focus{outline:none}.sidebar-search::-moz-placeholder{font-size:var(--sidebar-search-input-font-size)}.sidebar-search::placeholder{font-size:var(--sidebar-search-input-font-size)}#searchbox .highlight-link{margin:0;padding:var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal) 0;text-align:center}#searchbox .highlight-link a{color:var(--color-sidebar-search-icon);font-size:var(--font-size--small--2)}.sidebar-tree{font-size:var(--sidebar-item-font-size);margin-bottom:var(--sidebar-item-spacing-vertical);margin-top:var(--sidebar-tree-space-above)}.sidebar-tree ul{display:flex;flex-direction:column;list-style:none;margin-bottom:0;margin-top:0;padding:0}.sidebar-tree li{margin:0;position:relative}.sidebar-tree li>ul{margin-left:var(--sidebar-item-spacing-horizontal)}.sidebar-tree .icon,.sidebar-tree .reference{color:var(--color-sidebar-link-text)}.sidebar-tree .reference{box-sizing:border-box;display:inline-block;height:100%;line-height:var(--sidebar-item-line-height);overflow-wrap:anywhere;padding:var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal);text-decoration:none;width:100%}.sidebar-tree .reference:hover{background:var(--color-sidebar-item-background--hover);color:var(--color-sidebar-link-text)}.sidebar-tree .reference.external:after{color:var(--color-sidebar-link-text);content:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23607D8B' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' viewBox='0 0 24 24'%3E%3Cpath stroke='none' d='M0 0h24v24H0z'/%3E%3Cpath d='M11 7H6a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2-2v-5M10 14 20 4M15 4h5v5'/%3E%3C/svg%3E");margin:0 .25rem;vertical-align:middle}.sidebar-tree .current-page>.reference{font-weight:700}.sidebar-tree label{align-items:center;cursor:pointer;display:flex;height:var(--sidebar-item-height);justify-content:center;position:absolute;right:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:var(--sidebar-expander-width)}.sidebar-tree .caption,.sidebar-tree :not(.caption)>.caption-text{color:var(--color-sidebar-caption-text);font-size:var(--sidebar-caption-font-size);font-weight:700;margin:var(--sidebar-caption-space-above) 0 0 0;padding:var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal);text-transform:uppercase}.sidebar-tree li.has-children>.reference{padding-right:var(--sidebar-expander-width)}.sidebar-tree .toctree-l1>.reference,.sidebar-tree .toctree-l1>label .icon{color:var(--color-sidebar-link-text--top-level)}.sidebar-tree label{background:var(--color-sidebar-item-expander-background)}.sidebar-tree label:hover{background:var(--color-sidebar-item-expander-background--hover)}.sidebar-tree .current>.reference{background:var(--color-sidebar-item-background--current)}.sidebar-tree .current>.reference:hover{background:var(--color-sidebar-item-background--hover)}.toctree-checkbox{display:none;position:absolute}.toctree-checkbox~ul{display:none}.toctree-checkbox~label .icon svg{transform:rotate(90deg)}.toctree-checkbox:checked~ul{display:block}.toctree-checkbox:checked~label .icon svg{transform:rotate(-90deg)}.toc-title-container{padding:var(--toc-title-padding);padding-top:var(--toc-spacing-vertical)}.toc-title{color:var(--color-toc-title-text);font-size:var(--toc-title-font-size);padding-left:var(--toc-spacing-horizontal);text-transform:uppercase}.no-toc{display:none}.toc-tree-container{padding-bottom:var(--toc-spacing-vertical)}.toc-tree{border-left:1px solid var(--color-background-border);font-size:var(--toc-font-size);line-height:1.3;padding-left:calc(var(--toc-spacing-horizontal) - var(--toc-item-spacing-horizontal))}.toc-tree>ul>li:first-child{padding-top:0}.toc-tree>ul>li:first-child>ul{padding-left:0}.toc-tree>ul>li:first-child>a{display:none}.toc-tree ul{list-style-type:none;margin-bottom:0;margin-top:0;padding-left:var(--toc-item-spacing-horizontal)}.toc-tree li{padding-top:var(--toc-item-spacing-vertical)}.toc-tree li.scroll-current>.reference{color:var(--color-toc-item-text--active);font-weight:700}.toc-tree a.reference{color:var(--color-toc-item-text);overflow-wrap:anywhere;text-decoration:none}.toc-scroll{max-height:100vh;overflow-y:scroll}.contents:not(.this-will-duplicate-information-and-it-is-still-useful-here){background:rgba(255,0,0,.25);color:var(--color-problematic)}.contents:not(.this-will-duplicate-information-and-it-is-still-useful-here):before{content:"ERROR: Adding a table of contents in Furo-based documentation is unnecessary, and does not work well with existing styling. Add a 'this-will-duplicate-information-and-it-is-still-useful-here' class, if you want an escape hatch."}.text-align\:left>p{text-align:left}.text-align\:center>p{text-align:center}.text-align\:right>p{text-align:right} -/*# sourceMappingURL=furo.css.map*/ \ No newline at end of file diff --git a/pulls/1961/_static/styles/furo.css.map b/pulls/1961/_static/styles/furo.css.map deleted file mode 100644 index 3ecc371507..0000000000 --- a/pulls/1961/_static/styles/furo.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"styles/furo.css","mappings":"AAAA,2EAA2E,CAU3E,KACE,gBAAiB,CACjB,6BACF,CASA,KACE,QACF,CAMA,KACE,aACF,CAOA,GACE,aAAc,CACd,cACF,CAUA,GACE,sBAAuB,CACvB,QAAS,CACT,gBACF,CAOA,IACE,+BAAiC,CACjC,aACF,CASA,EACE,4BACF,CAOA,YACE,kBAAmB,CACnB,yBAA0B,CAC1B,gCACF,CAMA,SAEE,kBACF,CAOA,cAGE,+BAAiC,CACjC,aACF,CAeA,QAEE,aAAc,CACd,aAAc,CACd,iBAAkB,CAClB,uBACF,CAEA,IACE,aACF,CAEA,IACE,SACF,CASA,IACE,iBACF,CAUA,sCAKE,mBAAoB,CACpB,cAAe,CACf,gBAAiB,CACjB,QACF,CAOA,aAEE,gBACF,CAOA,cAEE,mBACF,CAMA,gDAIE,yBACF,CAMA,wHAIE,iBAAkB,CAClB,SACF,CAMA,4GAIE,6BACF,CAMA,SACE,0BACF,CASA,OACE,qBAAsB,CACtB,aAAc,CACd,aAAc,CACd,cAAe,CACf,SAAU,CACV,kBACF,CAMA,SACE,uBACF,CAMA,SACE,aACF,CAOA,6BAEE,qBAAsB,CACtB,SACF,CAMA,kFAEE,WACF,CAOA,cACE,4BAA6B,CAC7B,mBACF,CAMA,yCACE,uBACF,CAOA,6BACE,yBAA0B,CAC1B,YACF,CASA,QACE,aACF,CAMA,QACE,iBACF,CAiBA,kBACE,YACF,CCvVA,aAcE,kEACE,uBAOF,WACE,iDAMF,kCACE,wBAEF,qCAEE,uBADA,uBACA,CAEF,SACE,wBAtBA,CCpBJ,iBAGE,qBAEA,sBACA,0BAFA,oBAHA,4BACA,oBAKA,6BAIA,2CAFA,mBACA,sCAFA,4BAGA,CAEF,gBACE,aCTF,KCGE,mHAEA,wGAEA,wCAAyC,CAEzC,wBAAyB,CACzB,wBAAyB,CACzB,4BAA6B,CAC7B,yBAA0B,CAC1B,2BAA4B,CAG5B,sDAAuD,CACvD,gDAAiD,CACjD,wDAAyD,CAGzD,0CAA2C,CAC3C,gDAAiD,CACjD,gDAAiD,CAKjD,gCAAiC,CACjC,sCAAuC,CAGvC,2CAA4C,CAG5C,uCAAwC,CCjCxC,+FAGA,uBAAwB,CAGxB,iCAAkC,CAClC,kCAAmC,CAEnC,+BAAgC,CAChC,sCAAuC,CACvC,sCAAuC,CACvC,qGAIA,mDAAoD,CAEpD,mCAAoC,CACpC,8CAA+C,CAC/C,gDAAiD,CACjD,kCAAmC,CACnC,6DAA8D,CAG9D,6BAA8B,CAC9B,6BAA8B,CAC9B,+BAAgC,CAChC,kCAAmC,CACnC,kCAAmC,CCPjC,+jBCYA,iqCAZF,iaCVA,8KAOA,4SAWA,4SAUA,0CACA,gEAGA,0CAGA,gEAGA,yCACA,+DAIA,4CACA,kEAGA,wCAUA,8DACA,uCAGA,4DACA,sCACA,2DAGA,4CACA,kEACA,uCAGA,6DACA,2GAGA,sHAEA,yFAEA,+CACA,+EAGA,4MAOA,gCACA,sHAIA,kCACA,uEACA,gEACA,4DACA,kEAGA,2DACA,sDACA,0CACA,8CACA,wGAGA,0BACA,iCAGA,+DACA,+BACA,sCACA,+DAEA,kGACA,oCACA,yDACA,sCL7HF,kCAEA,sDAIA,0CK2HE,kEAIA,oDACA,sDAGA,oCACA,oEAEA,0DACA,qDAIA,oDACA,6DAIA,iEAIA,2DAIA,2DAGA,4DACA,gEAIA,gEAEA,gFAEA,oNASA,qDLxKE,gFAGE,4DAIF,oEKkHF,yEAEA,6DAGA,0DAEA,uDACA,qDACA,wDAIA,6DAIA,yDACA,2DAIA,uCAGA,wCACA,sDAGA,+CAGA,6DAEA,iDACA,+DAEA,wDAEA,sEAMA,0DACA,sBACA,mEL9JI,wEAEA,iCACE,+BAMN,wEAGA,iCACE,kFAEA,uEAIF,gEACE,8BAGF,qEMvDA,sCAKA,wFAKA,iCAIA,0BAWA,iCACA,4BACA,mCAGA,+BAEA,sCACA,4BAEA,mCAEA,sCAKA,sDAIA,gCAEA,gEAQF,wCAME,sBACA,kCAKA,uBAEA,gEAIA,2BAIA,mCAEA,qCACA,iCAGE,+BACA,wEAEE,iCACA,kFAGF,6BACA,0CACF,kCAEE,8BACE,8BACA,qEAEE,sCACA,wFCnFN,iCAGF,2DAEE,4BACA,oCAGA,mIAGA,4HACE,gEAMJ,+CAGE,sBACA,yCAEF,uBAEE,sEAKA,gDACA,kEAGA,iFAGE,YAGF,EACA,4HAQF,mBACE,6BACA,mBACA,wCACA,wCACA,2CAIA,eAGA,mBAKE,mBAGA,CAJA,uCACA,iBAFF,gBACE,CAKE,mBACA,mBAGJ,oBAIF,+BAGE,kDACA,OADA,kBAGA,CAFA,gBAEA,mBACA,oBAEA,sCACA,OAGF,cAHE,WAGF,GAEE,oBACA,CAHF,gBAGE,CC9Gc,YDiHd,+CAIF,SAEE,CAPF,UACE,wBAMA,4BAEA,GAGA,uBACA,CAJA,yBAGA,CACA,iDAKA,2CAGA,2DAQA,iBACA,uCAGA,kEAKE,SAKJ,8BACE,yDACA,2BAEA,oBACA,8BAEA,yDAEE,4BAEJ,uCACE,CACA,iEAGA,CAEA,wCACE,uBACA,kDAEA,0DAEE,CAJF,oBAIE,0GAWN,aACE,CAHA,YAGA,4HASA,+CAGF,sBACE,WACA,WAQA,4BAFF,0CAEE,CARA,qCAsBA,CAdA,iBAEA,kBACE,aADF,4BACE,WAMF,2BAGF,qCAEE,CAXE,UAWF,+BAGA,uBAEA,SAEA,0CAIE,CANF,qCAEA,CAIE,2DACE,gBAIN,+CAIA,CAEA,kDAKE,CAPF,8BAEA,CAOE,YACA,CAjBI,2BAGN,CAHM,WAcJ,UAGA,CAEA,2GAIF,iCAGE,8BAIA,qBACA,oBACF,uBAOI,0CAIA,CATF,6DAKE,CALF,sBASE,qCAKF,CACE,cACA,CAFF,sBAEE,CACA,+BAEA,qBAEE,WAKN,aACE,sCAGA,mBAEA,6BAMA,kCACA,CAJA,sBACA,aAEA,CAJA,eACA,MAIA,2FAEA,UAGA,YACA,sBACE,8BAEA,CALF,aACA,WAIE,OACA,oBAEF,uBACE,WAEF,YAFE,UAEF,eAgBA,kBACE,CAhBA,qDAQF,qCAGF,CAGI,YACF,CAJF,2BAGI,CAEA,eACA,qBAGA,mEAEA,qBACA,8BAIA,kBADF,kBACE,yBAEJ,oCAGI,qDAIJ,+BAGI,oCAEA,+CAQF,4CACE,yBACF,2BAOE,sBACA,CAHA,WACA,CAFF,cACE,CAJA,YAGF,CAEE,SAEA,mBAGA,kDAEE,CAJF,cAEA,cAEE,sBAEA,mBADA,YACA,uBACA,mDACE,CADF,YACE,iDAEA,uCAEN,+DAOE,mBADF,sBACE,mBAGF,aACE,sCAIA,aADF,WACE,CAKF,SACE,CAHJ,kBAEE,CAJE,gBAEJ,CAHI,iBAMA,yFAKA,aACA,eACA,cElbJ,iBAEE,aADA,iBACA,6BAEA,kCAEA,SACA,UAIA,gCACA,CALA,SAEA,SAEA,CAJA,0EAEA,CAFA,OAKA,CAGA,mDACE,iBAGF,gCACE,CADF,UACE,aAEJ,iCAEE,CAFF,UAEE,wCAEA,WACA,WADA,UACA,CACA,4CAGA,MACA,CADA,KACA,wCACA,UAGA,CAJA,UAIA,6DAUA,0CACE,CAFF,mBAEE,wEACA,CAVA,YACA,CAMF,mBAJE,OAOA,gBAJJ,gCACE,CANE,cACA,CAHA,oBACA,CAGA,QAGJ,CAII,0BACA,CADA,UACA,wCAEJ,kBACE,0DACA,gCACE,kBACA,CADA,YACA,oEACA,2CAMF,mDAII,CALN,YACE,CANE,cAKJ,CACE,iBAII,kEACA,yCACE,kDACA,yDACE,+CACA,uBANN,CAMM,+BANN,uCACE,qDACA,4BAEE,mBADA,0CACA,CADA,qBACA,0DACE,wCACA,sGALJ,oCACA,sBACE,kBAFF,UAEE,2CACA,wFACE,cACA,kEANN,uBACE,iDACA,CADA,UACA,0DACE,wDAEE,iEACA,qEANN,sCACE,CAGE,iBAHF,gBAGE,qBACE,CAJJ,uBACA,gDACE,wDACA,6DAHF,2CACA,CADA,gBACA,eACE,CAGE,sBANN,8BACE,CAII,iBAFF,4DACA,WACE,YADF,uCACE,6EACA,2BANN,8CACE,kDACA,0CACE,8BACA,yFACE,sBACA,sFALJ,mEACA,sBACE,kEACA,6EACE,uCACA,kEALJ,qGAEE,kEACA,6EACE,uCACA,kEALJ,8CACA,uDACE,sEACA,2EACE,sCACA,iEALJ,mGACA,qCACE,oDACA,0DACE,6GACA,gDAGR,yDCrEA,sEACE,CACA,6GACE,gEACF,iGAIF,wFACE,qDAGA,mGAEE,2CAEF,4FACE,gCACF,wGACE,8DAEE,6FAIA,iJAKN,6GACE,gDAKF,yDACA,qCAGA,6BACA,kBACA,qDAKA,oCAEA,+DAGA,2CAGE,oDAIA,oEAEE,qBAGJ,wDAEE,uCAEF,kEAGA,8CAEA,uDAIF,gEAIE,6BACA,gEAIA,+CACE,0EAIF,sDAEE,+DAGF,sCACA,8BACE,oCAEJ,wBACE,4FAEE,gBAEJ,yGAGI,kBAGJ,CCnHE,2MCFF,oBAGE,wGAKA,iCACE,CADF,wBACE,8GAQA,mBCjBJ,2GAIE,mBACA,6HAMA,YACE,mIAYF,eACA,CAHF,YAGE,4FAGE,8BAKF,uBAkBE,sCACA,CADA,qBAbA,wCAIA,CALF,8BACE,CADF,gBAKE,wCACA,CAOA,kDACA,CACA,kCAKF,6BAGA,4CACE,kDACA,eAGF,cACE,aACA,iBACA,yBACA,8BACA,WAGJ,2BACE,cAGA,+BACA,CAHA,eAGA,wCACA,YACA,iBACA,uEAGA,0BACA,2CAEA,8EAGI,qBACA,CAFF,kBAEE,kBAGN,0CAGE,mCAGA,4BAIA,gEACE,qCACA,8BAEA,gBACA,+CACA,iCAEF,iCAEE,gEACA,qCAGF,8BAEE,+BAIA,yCAEE,qBADA,gBACA,yBAKF,eACA,CAFF,YACE,CACA,iBACA,qDAEA,mDCvIJ,2FAOE,iCACA,CAEA,eACA,CAHA,kBAEA,CAFA,wBAGA,8BACA,eACE,CAFF,YAEE,0BACA,8CAGA,oBACE,oCAGA,kBACE,8DAEA,iBAEN,UACE,8BAIJ,+CAEE,qDAEF,kDAIE,YAEF,CAFE,YAEF,CCpCE,mFADA,kBAKE,CAJF,IAGA,aACE,mCAGA,iDACE,+BAEJ,wBAEE,mBAMA,6CAEF,CAJE,mBAEA,CAEF,kCAGE,CARF,kBACE,CAHA,eAUA,YACA,mBACA,CADA,UACA,wCC9BF,oBDkCE,wBCnCJ,uCACE,+BACA,+DACA,sBAGA,qBCDA,6CAIE,CAPF,uBAGA,CDGE,oBACF,yDAEE,CCDE,2CAGF,CAJA,kCACE,CDJJ,YACE,CAIA,eCTF,CDKE,uBCMA,gCACE,YAEF,oCAEE,wBACA,0BAIF,iBAEA,cADF,UACE,uBAEA,iCAEA,wCAEA,6CAMA,CAYF,gCATI,4BASJ,CAZE,mCAEE,iCAUJ,4BAGE,4DADA,+BACA,CAHF,qBAGE,sCACE,OAEF,iBAHA,SAGA,iHACE,2DAKF,CANA,8EAMA,uSAEE,kBAEF,+FACE,yCCjEJ,WACA,yBAGA,uBACA,gBAEA,uCAIA,CAJA,iCAIA,uCAGA,UACE,gBACA,qBAEA,0CClBJ,gBACE,KAGF,qBACE,YAGF,CAHE,cAGF,gCAEE,mBACA,iEAEA,oCACA,wCAEA,sBACA,WAEA,CAFA,YAEA,8EAEA,mCAFA,iBAEA,6BAIA,wEAKA,sDAIE,CARF,mDAIA,CAIE,cAEF,8CAIA,oBAFE,iBAEF,8CAGE,eAEF,CAFE,YAEF,OAEE,kBAGJ,CAJI,eACA,CAFF,mBAKF,yCCjDE,oBACA,CAFA,iBAEA,uCAKE,iBACA,qCAGA,mBCZJ,CDWI,gBCXJ,6BAEE,eACA,sBAGA,eAEA,sBACA,oDACA,iGAMA,gBAFE,YAEF,8FAME,iJCnBF,YACA,gNAWE,gDAEF,iSAaE,kBACE,gHAKF,oCACE,eACF,CADE,UACF,8CACE,gDACF,wCACE,oBCxCJ,oBAEF,6BACE,QACE,kDAGF,yBACE,kDAmBA,kDAEF,CAhBA,+CAaA,CAbA,oBAaA,0FACE,CADF,gGAfF,cACE,gBACA,CAaA,0BAGA,mQACE,gBAGF,oMACE,iBACA,CAFF,eACE,CADF,gBAEE,aAGJ,iCAEE,CAFF,wCAEE,wBAUE,+VAIE,uEAHA,2BAGA,wXAKJ,iDAGF,CARM,+CACE,iDAIN,CALI,gBAQN,mHACE,gBAGF,2DACE,0EAOA,0EAGF,gBAEE,6DC/EA,kDACA,gCACA,qDAGA,qBACA,qDCFA,cACA,eAEA,yBAGF,sBAEE,iBACA,sNAWA,iBACE,kBACA,wRAgBA,kBAEA,iOAgBA,uCACE,uEAEA,kBAEF,qUAuBE,iDAIJ,CACA,geCxFF,4BAEE,CAQA,6JACA,iDAIA,sEAGA,mDAOF,iDAGE,4DAIA,8CACA,qDAEE,eAFF,cAEE,oBAEF,uBAFE,kCAGA,eACA,iBACA,mBAIA,mDACA,CAHA,uCAEA,CAJA,0CACA,CAIA,gBAJA,gBACA,oBADA,gBAIA,wBAEJ,gBAGE,6BACA,YAHA,iBAGA,gCACA,iEAEA,6CACA,sDACA,0BADA,wBACA,0BACA,oIAIA,mBAFA,YAEA,qBACA,0CAIE,uBAEF,CAHA,yBACE,CAEF,iDACE,mFAKJ,oCACE,CANE,aAKJ,CACE,qEAIA,YAFA,WAEA,CAHA,aACA,CAEA,gBACE,4BACA,sBADA,aACA,gCAMF,oCACA,yDACA,2CAEA,qBAGE,kBAEA,CACA,mCAIF,CARE,YACA,CAOF,iCAEE,CAPA,oBACA,CAQA,oBACE,uDAEJ,sDAGA,CAHA,cAGA,0BACE,oDAIA,oCACA,4BACA,sBAGA,cAEA,oFAGA,sBAEA,yDACE,CAIF,iBAJE,wBAIF,6CAHE,6CAKA,eACA,aACA,CADA,cACA,yCAGJ,kBACE,CAKA,iDAEA,CARF,aACE,4CAGA,kBAIA,wEAGA,wDAGA,kCAOA,iDAGA,CAPF,WAEE,sCAEA,CAJF,2CACE,CAMA,qCACA,+BARF,kBACE,qCAOA,iBAsBA,sBACE,CAvBF,WAKA,CACE,0DAIF,CALA,uDACE,CANF,sBAqBA,4CACA,CALA,gRAIA,YAEE,6CAEN,mCAEE,+CASA,6EAIA,4BChNA,SDmNA,qFCnNA,gDACA,sCAGA,qCACA,sDACA,CAKA,kDAGA,CARA,0CAQA,kBAGA,YACA,sBACA,iBAFA,gBADF,YACE,CAHA,SAKA,kBAEA,SAFA,iBAEA,uEAGA,CAEE,6CAFF,oCAgBI,CAdF,yBACE,qBACF,CAGF,oBACE,CAIF,WACE,CALA,2CAGA,uBACF,CACE,mFAGE,CALF,qBAEA,UAGE,gCAIF,sDAEA,CALE,oCAKF,yCC7CJ,oCACE,CD+CA,yXAQE,sCCrDJ,wCAGA,oCACE","sources":["webpack:///./node_modules/normalize.css/normalize.css","webpack:///./src/furo/assets/styles/base/_print.sass","webpack:///./src/furo/assets/styles/base/_screen-readers.sass","webpack:///./src/furo/assets/styles/base/_theme.sass","webpack:///./src/furo/assets/styles/variables/_fonts.scss","webpack:///./src/furo/assets/styles/variables/_spacing.scss","webpack:///./src/furo/assets/styles/variables/_icons.scss","webpack:///./src/furo/assets/styles/variables/_admonitions.scss","webpack:///./src/furo/assets/styles/variables/_colors.scss","webpack:///./src/furo/assets/styles/base/_typography.sass","webpack:///./src/furo/assets/styles/_scaffold.sass","webpack:///./src/furo/assets/styles/variables/_layout.scss","webpack:///./src/furo/assets/styles/content/_admonitions.sass","webpack:///./src/furo/assets/styles/content/_api.sass","webpack:///./src/furo/assets/styles/content/_blocks.sass","webpack:///./src/furo/assets/styles/content/_captions.sass","webpack:///./src/furo/assets/styles/content/_code.sass","webpack:///./src/furo/assets/styles/content/_footnotes.sass","webpack:///./src/furo/assets/styles/content/_images.sass","webpack:///./src/furo/assets/styles/content/_indexes.sass","webpack:///./src/furo/assets/styles/content/_lists.sass","webpack:///./src/furo/assets/styles/content/_math.sass","webpack:///./src/furo/assets/styles/content/_misc.sass","webpack:///./src/furo/assets/styles/content/_rubrics.sass","webpack:///./src/furo/assets/styles/content/_sidebar.sass","webpack:///./src/furo/assets/styles/content/_tables.sass","webpack:///./src/furo/assets/styles/content/_target.sass","webpack:///./src/furo/assets/styles/content/_gui-labels.sass","webpack:///./src/furo/assets/styles/components/_footer.sass","webpack:///./src/furo/assets/styles/components/_sidebar.sass","webpack:///./src/furo/assets/styles/components/_table_of_contents.sass","webpack:///./src/furo/assets/styles/_shame.sass"],"sourcesContent":["/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput { /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n","// This file contains styles for managing print media.\n\n////////////////////////////////////////////////////////////////////////////////\n// Hide elements not relevant to print media.\n////////////////////////////////////////////////////////////////////////////////\n@media print\n // Hide icon container.\n .content-icon-container\n display: none !important\n\n // Hide showing header links if hovering over when printing.\n .headerlink\n display: none !important\n\n // Hide mobile header.\n .mobile-header\n display: none !important\n\n // Hide navigation links.\n .related-pages\n display: none !important\n\n////////////////////////////////////////////////////////////////////////////////\n// Tweaks related to decolorization.\n////////////////////////////////////////////////////////////////////////////////\n@media print\n // Apply a border around code which no longer have a color background.\n .highlight\n border: 0.1pt solid var(--color-foreground-border)\n\n////////////////////////////////////////////////////////////////////////////////\n// Avoid page break in some relevant cases.\n////////////////////////////////////////////////////////////////////////////////\n@media print\n ul, ol, dl, a, table, pre, blockquote, p\n page-break-inside: avoid\n\n h1, h2, h3, h4, h5, h6, img, figure, caption\n page-break-inside: avoid\n page-break-after: avoid\n\n ul, ol, dl\n page-break-before: avoid\n",".visually-hidden\n position: absolute !important\n width: 1px !important\n height: 1px !important\n padding: 0 !important\n margin: -1px !important\n overflow: hidden !important\n clip: rect(0,0,0,0) !important\n white-space: nowrap !important\n border: 0 !important\n color: var(--color-foreground-primary)\n background: var(--color-background-primary)\n\n:-moz-focusring\n outline: auto\n","// This file serves as the \"skeleton\" of the theming logic.\n//\n// This contains the bulk of the logic for handling dark mode, color scheme\n// toggling and the handling of color-scheme-specific hiding of elements.\n\nbody\n @include fonts\n @include spacing\n @include icons\n @include admonitions\n @include default-admonition(#651fff, \"abstract\")\n @include default-topic(#14B8A6, \"pencil\")\n\n @include colors\n\n.only-light\n display: block !important\nhtml body .only-dark\n display: none !important\n\n// Ignore dark-mode hints if print media.\n@media not print\n // Enable dark-mode, if requested.\n body[data-theme=\"dark\"]\n @include colors-dark\n\n html & .only-light\n display: none !important\n .only-dark\n display: block !important\n\n // Enable dark mode, unless explicitly told to avoid.\n @media (prefers-color-scheme: dark)\n body:not([data-theme=\"light\"])\n @include colors-dark\n\n html & .only-light\n display: none !important\n .only-dark\n display: block !important\n\n//\n// Theme toggle presentation\n//\nbody[data-theme=\"auto\"]\n .theme-toggle svg.theme-icon-when-auto-light\n display: block\n\n @media (prefers-color-scheme: dark)\n .theme-toggle svg.theme-icon-when-auto-dark\n display: block\n .theme-toggle svg.theme-icon-when-auto-light\n display: none\n\nbody[data-theme=\"dark\"]\n .theme-toggle svg.theme-icon-when-dark\n display: block\n\nbody[data-theme=\"light\"]\n .theme-toggle svg.theme-icon-when-light\n display: block\n","// Fonts used by this theme.\n//\n// There are basically two things here -- using the system font stack and\n// defining sizes for various elements in %ages. We could have also used `em`\n// but %age is easier to reason about for me.\n\n@mixin fonts {\n // These are adapted from https://systemfontstack.com/\n --font-stack: -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial,\n sans-serif, Apple Color Emoji, Segoe UI Emoji;\n --font-stack--monospace: \"SFMono-Regular\", Menlo, Consolas, Monaco,\n Liberation Mono, Lucida Console, monospace;\n --font-stack--headings: var(--font-stack);\n\n --font-size--normal: 100%;\n --font-size--small: 87.5%;\n --font-size--small--2: 81.25%;\n --font-size--small--3: 75%;\n --font-size--small--4: 62.5%;\n\n // Sidebar\n --sidebar-caption-font-size: var(--font-size--small--2);\n --sidebar-item-font-size: var(--font-size--small);\n --sidebar-search-input-font-size: var(--font-size--small);\n\n // Table of Contents\n --toc-font-size: var(--font-size--small--3);\n --toc-font-size--mobile: var(--font-size--normal);\n --toc-title-font-size: var(--font-size--small--4);\n\n // Admonitions\n //\n // These aren't defined in terms of %ages, since nesting these is permitted.\n --admonition-font-size: 0.8125rem;\n --admonition-title-font-size: 0.8125rem;\n\n // Code\n --code-font-size: var(--font-size--small--2);\n\n // API\n --api-font-size: var(--font-size--small);\n}\n","// Spacing for various elements on the page\n//\n// If the user wants to tweak things in a certain way, they are permitted to.\n// They also have to deal with the consequences though!\n\n@mixin spacing {\n // Header!\n --header-height: calc(\n var(--sidebar-item-line-height) + 4 * #{var(--sidebar-item-spacing-vertical)}\n );\n --header-padding: 0.5rem;\n\n // Sidebar\n --sidebar-tree-space-above: 1.5rem;\n --sidebar-caption-space-above: 1rem;\n\n --sidebar-item-line-height: 1rem;\n --sidebar-item-spacing-vertical: 0.5rem;\n --sidebar-item-spacing-horizontal: 1rem;\n --sidebar-item-height: calc(\n var(--sidebar-item-line-height) + 2 *#{var(--sidebar-item-spacing-vertical)}\n );\n\n --sidebar-expander-width: var(--sidebar-item-height); // be square\n\n --sidebar-search-space-above: 0.5rem;\n --sidebar-search-input-spacing-vertical: 0.5rem;\n --sidebar-search-input-spacing-horizontal: 0.5rem;\n --sidebar-search-input-height: 1rem;\n --sidebar-search-icon-size: var(--sidebar-search-input-height);\n\n // Table of Contents\n --toc-title-padding: 0.25rem 0;\n --toc-spacing-vertical: 1.5rem;\n --toc-spacing-horizontal: 1.5rem;\n --toc-item-spacing-vertical: 0.4rem;\n --toc-item-spacing-horizontal: 1rem;\n}\n","// Expose theme icons as CSS variables.\n\n$icons: (\n // Adapted from tabler-icons\n // url: https://tablericons.com/\n \"search\":\n url('data:image/svg+xml;charset=utf-8,'),\n // Factored out from mkdocs-material on 24-Aug-2020.\n // url: https://squidfunk.github.io/mkdocs-material/reference/admonitions/\n \"pencil\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"abstract\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"info\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"flame\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"question\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"warning\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"failure\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"spark\":\n url('data:image/svg+xml;charset=utf-8,')\n);\n\n@mixin icons {\n @each $name, $glyph in $icons {\n --icon-#{$name}: #{$glyph};\n }\n}\n","// Admonitions\n\n// Structure of these is:\n// admonition-class: color \"icon-name\";\n//\n// The colors are translated into CSS variables below. The icons are\n// used directly in the main declarations to set the `mask-image` in\n// the title.\n\n// prettier-ignore\n$admonitions: (\n // Each of these has an reST directives for it.\n \"caution\": #ff9100 \"spark\",\n \"warning\": #ff9100 \"warning\",\n \"danger\": #ff5252 \"spark\",\n \"attention\": #ff5252 \"warning\",\n \"error\": #ff5252 \"failure\",\n \"hint\": #00c852 \"question\",\n \"tip\": #00c852 \"info\",\n \"important\": #00bfa5 \"flame\",\n \"note\": #00b0ff \"pencil\",\n \"seealso\": #448aff \"info\",\n \"admonition-todo\": #808080 \"pencil\"\n);\n\n@mixin default-admonition($color, $icon-name) {\n --color-admonition-title: #{$color};\n --color-admonition-title-background: #{rgba($color, 0.2)};\n\n --icon-admonition-default: var(--icon-#{$icon-name});\n}\n\n@mixin default-topic($color, $icon-name) {\n --color-topic-title: #{$color};\n --color-topic-title-background: #{rgba($color, 0.2)};\n\n --icon-topic-default: var(--icon-#{$icon-name});\n}\n\n@mixin admonitions {\n @each $name, $values in $admonitions {\n --color-admonition-title--#{$name}: #{nth($values, 1)};\n --color-admonition-title-background--#{$name}: #{rgba(\n nth($values, 1),\n 0.2\n )};\n }\n}\n","// Colors used throughout this theme.\n//\n// The aim is to give the user more control. Thus, instead of hard-coding colors\n// in various parts of the stylesheet, the approach taken is to define all\n// colors as CSS variables and reusing them in all the places.\n//\n// `colors-dark` depends on `colors` being included at a lower specificity.\n\n@mixin colors {\n --color-problematic: #b30000;\n\n // Base Colors\n --color-foreground-primary: black; // for main text and headings\n --color-foreground-secondary: #5a5c63; // for secondary text\n --color-foreground-muted: #6b6f76; // for muted text\n --color-foreground-border: #878787; // for content borders\n\n --color-background-primary: white; // for content\n --color-background-secondary: #f8f9fb; // for navigation + ToC\n --color-background-hover: #efeff4ff; // for navigation-item hover\n --color-background-hover--transparent: #efeff400;\n --color-background-border: #eeebee; // for UI borders\n --color-background-item: #ccc; // for \"background\" items (eg: copybutton)\n\n // Announcements\n --color-announcement-background: #000000dd;\n --color-announcement-text: #eeebee;\n\n // Brand colors\n --color-brand-primary: #0a4bff;\n --color-brand-content: #2757dd;\n --color-brand-visited: #872ee0;\n\n // API documentation\n --color-api-background: var(--color-background-hover--transparent);\n --color-api-background-hover: var(--color-background-hover);\n --color-api-overall: var(--color-foreground-secondary);\n --color-api-name: var(--color-problematic);\n --color-api-pre-name: var(--color-problematic);\n --color-api-paren: var(--color-foreground-secondary);\n --color-api-keyword: var(--color-foreground-primary);\n\n --color-api-added: #21632c;\n --color-api-added-border: #38a84d;\n --color-api-changed: #046172;\n --color-api-changed-border: #06a1bc;\n --color-api-deprecated: #605706;\n --color-api-deprecated-border: #f0d90f;\n --color-api-removed: #b30000;\n --color-api-removed-border: #ff5c5c;\n\n --color-highlight-on-target: #ffffcc;\n\n // Inline code background\n --color-inline-code-background: var(--color-background-secondary);\n\n // Highlighted text (search)\n --color-highlighted-background: #ddeeff;\n --color-highlighted-text: var(--color-foreground-primary);\n\n // GUI Labels\n --color-guilabel-background: #ddeeff80;\n --color-guilabel-border: #bedaf580;\n --color-guilabel-text: var(--color-foreground-primary);\n\n // Admonitions!\n --color-admonition-background: transparent;\n\n //////////////////////////////////////////////////////////////////////////////\n // Everything below this should be one of:\n // - var(...)\n // - *-gradient(...)\n // - special literal values (eg: transparent, none)\n //////////////////////////////////////////////////////////////////////////////\n\n // Tables\n --color-table-header-background: var(--color-background-secondary);\n --color-table-border: var(--color-background-border);\n\n // Cards\n --color-card-border: var(--color-background-secondary);\n --color-card-background: transparent;\n --color-card-marginals-background: var(--color-background-secondary);\n\n // Header\n --color-header-background: var(--color-background-primary);\n --color-header-border: var(--color-background-border);\n --color-header-text: var(--color-foreground-primary);\n\n // Sidebar (left)\n --color-sidebar-background: var(--color-background-secondary);\n --color-sidebar-background-border: var(--color-background-border);\n\n --color-sidebar-brand-text: var(--color-foreground-primary);\n --color-sidebar-caption-text: var(--color-foreground-muted);\n --color-sidebar-link-text: var(--color-foreground-secondary);\n --color-sidebar-link-text--top-level: var(--color-brand-primary);\n\n --color-sidebar-item-background: var(--color-sidebar-background);\n --color-sidebar-item-background--current: var(\n --color-sidebar-item-background\n );\n --color-sidebar-item-background--hover: linear-gradient(\n 90deg,\n var(--color-background-hover--transparent) 0%,\n var(--color-background-hover) var(--sidebar-item-spacing-horizontal),\n var(--color-background-hover) 100%\n );\n\n --color-sidebar-item-expander-background: transparent;\n --color-sidebar-item-expander-background--hover: var(\n --color-background-hover\n );\n\n --color-sidebar-search-text: var(--color-foreground-primary);\n --color-sidebar-search-background: var(--color-background-secondary);\n --color-sidebar-search-background--focus: var(--color-background-primary);\n --color-sidebar-search-border: var(--color-background-border);\n --color-sidebar-search-icon: var(--color-foreground-muted);\n\n // Table of Contents (right)\n --color-toc-background: var(--color-background-primary);\n --color-toc-title-text: var(--color-foreground-muted);\n --color-toc-item-text: var(--color-foreground-secondary);\n --color-toc-item-text--hover: var(--color-foreground-primary);\n --color-toc-item-text--active: var(--color-brand-primary);\n\n // Actual page contents\n --color-content-foreground: var(--color-foreground-primary);\n --color-content-background: transparent;\n\n // Links\n --color-link: var(--color-brand-content);\n --color-link-underline: var(--color-background-border);\n --color-link--hover: var(--color-brand-content);\n --color-link-underline--hover: var(--color-foreground-border);\n\n --color-link--visited: var(--color-brand-visited);\n --color-link-underline--visited: var(--color-background-border);\n --color-link--visited--hover: var(--color-brand-visited);\n --color-link-underline--visited--hover: var(--color-foreground-border);\n}\n\n@mixin colors-dark {\n --color-problematic: #ee5151;\n\n // Base Colors\n --color-foreground-primary: #cfd0d0; // for main text and headings\n --color-foreground-secondary: #9ca0a5; // for secondary text\n --color-foreground-muted: #81868d; // for muted text\n --color-foreground-border: #666666; // for content borders\n\n --color-background-primary: #131416; // for content\n --color-background-secondary: #1a1c1e; // for navigation + ToC\n --color-background-hover: #1e2124ff; // for navigation-item hover\n --color-background-hover--transparent: #1e212400;\n --color-background-border: #303335; // for UI borders\n --color-background-item: #444; // for \"background\" items (eg: copybutton)\n\n // Announcements\n --color-announcement-background: #000000dd;\n --color-announcement-text: #eeebee;\n\n // Brand colors\n --color-brand-primary: #3d94ff;\n --color-brand-content: #5ca5ff;\n --color-brand-visited: #b27aeb;\n\n // Highlighted text (search)\n --color-highlighted-background: #083563;\n\n // GUI Labels\n --color-guilabel-background: #08356380;\n --color-guilabel-border: #13395f80;\n\n // API documentation\n --color-api-keyword: var(--color-foreground-secondary);\n --color-highlight-on-target: #333300;\n\n --color-api-added: #3db854;\n --color-api-added-border: #267334;\n --color-api-changed: #09b0ce;\n --color-api-changed-border: #056d80;\n --color-api-deprecated: #b1a10b;\n --color-api-deprecated-border: #6e6407;\n --color-api-removed: #ff7575;\n --color-api-removed-border: #b03b3b;\n\n // Admonitions\n --color-admonition-background: #18181a;\n\n // Cards\n --color-card-border: var(--color-background-secondary);\n --color-card-background: #18181a;\n --color-card-marginals-background: var(--color-background-hover);\n}\n","// This file contains the styling for making the content throughout the page,\n// including fonts, paragraphs, headings and spacing among these elements.\n\nbody\n font-family: var(--font-stack)\npre,\ncode,\nkbd,\nsamp\n font-family: var(--font-stack--monospace)\n\n// Make fonts look slightly nicer.\nbody\n -webkit-font-smoothing: antialiased\n -moz-osx-font-smoothing: grayscale\n\n// Line height from Bootstrap 4.1\narticle\n line-height: 1.5\n\n//\n// Headings\n//\nh1,\nh2,\nh3,\nh4,\nh5,\nh6\n line-height: 1.25\n font-family: var(--font-stack--headings)\n font-weight: bold\n\n border-radius: 0.5rem\n margin-top: 0.5rem\n margin-bottom: 0.5rem\n margin-left: -0.5rem\n margin-right: -0.5rem\n padding-left: 0.5rem\n padding-right: 0.5rem\n\n + p\n margin-top: 0\n\nh1\n font-size: 2.5em\n margin-top: 1.75rem\n margin-bottom: 1rem\nh2\n font-size: 2em\n margin-top: 1.75rem\nh3\n font-size: 1.5em\nh4\n font-size: 1.25em\nh5\n font-size: 1.125em\nh6\n font-size: 1em\n\nsmall\n opacity: 75%\n font-size: 80%\n\n// Paragraph\np\n margin-top: 0.5rem\n margin-bottom: 0.75rem\n\n// Horizontal rules\nhr.docutils\n height: 1px\n padding: 0\n margin: 2rem 0\n background-color: var(--color-background-border)\n border: 0\n\n.centered\n text-align: center\n\n// Links\na\n text-decoration: underline\n\n color: var(--color-link)\n text-decoration-color: var(--color-link-underline)\n\n &:visited\n color: var(--color-link--visited)\n text-decoration-color: var(--color-link-underline--visited)\n &:hover\n color: var(--color-link--visited--hover)\n text-decoration-color: var(--color-link-underline--visited--hover)\n\n &:hover\n color: var(--color-link--hover)\n text-decoration-color: var(--color-link-underline--hover)\n &.muted-link\n color: inherit\n &:hover\n color: var(--color-link--hover)\n text-decoration-color: var(--color-link-underline--hover)\n &:visited\n color: var(--color-link--visited--hover)\n text-decoration-color: var(--color-link-underline--visited--hover)\n","// This file contains the styles for the overall layouting of the documentation\n// skeleton, including the responsive changes as well as sidebar toggles.\n//\n// This is implemented as a mobile-last design, which isn't ideal, but it is\n// reasonably good-enough and I got pretty tired by the time I'd finished this\n// to move the rules around to fix this. Shouldn't take more than 3-4 hours,\n// if you know what you're doing tho.\n\n// HACK: Not all browsers account for the scrollbar width in media queries.\n// This results in horizontal scrollbars in the breakpoint where we go\n// from displaying everything to hiding the ToC. We accomodate for this by\n// adding a bit of padding to the TOC drawer, disabling the horizontal\n// scrollbar and allowing the scrollbars to cover the padding.\n// https://www.456bereastreet.com/archive/201301/media_query_width_and_vertical_scrollbars/\n\n// HACK: Always having the scrollbar visible, prevents certain browsers from\n// causing the content to stutter horizontally between taller-than-viewport and\n// not-taller-than-viewport pages.\n\nhtml\n overflow-x: hidden\n overflow-y: scroll\n scroll-behavior: smooth\n\n.sidebar-scroll, .toc-scroll, article[role=main] *\n // Override Firefox scrollbar style\n scrollbar-width: thin\n scrollbar-color: var(--color-foreground-border) transparent\n\n // Override Chrome scrollbar styles\n &::-webkit-scrollbar\n width: 0.25rem\n height: 0.25rem\n &::-webkit-scrollbar-thumb\n background-color: var(--color-foreground-border)\n border-radius: 0.125rem\n\n//\n// Overalls\n//\nhtml,\nbody\n height: 100%\n color: var(--color-foreground-primary)\n background: var(--color-background-primary)\n\n.skip-to-content\n position: fixed\n padding: 1rem\n border-radius: 1rem\n left: 0.25rem\n top: 0.25rem\n z-index: 40\n background: var(--color-background-primary)\n color: var(--color-foreground-primary)\n\n transform: translateY(-200%)\n transition: transform 300ms ease-in-out\n\n &:focus-within\n transform: translateY(0%)\n\narticle\n color: var(--color-content-foreground)\n background: var(--color-content-background)\n overflow-wrap: break-word\n\n.page\n display: flex\n // fill the viewport for pages with little content.\n min-height: 100%\n\n.mobile-header\n width: 100%\n height: var(--header-height)\n background-color: var(--color-header-background)\n color: var(--color-header-text)\n border-bottom: 1px solid var(--color-header-border)\n\n // Looks like sub-script/super-script have this, and we need this to\n // be \"on top\" of those.\n z-index: 10\n\n // We don't show the header on large screens.\n display: none\n\n // Add shadow when scrolled\n &.scrolled\n border-bottom: none\n box-shadow: 0 0 0.2rem rgba(0, 0, 0, 0.1), 0 0.2rem 0.4rem rgba(0, 0, 0, 0.2)\n\n .header-center\n a\n color: var(--color-header-text)\n text-decoration: none\n\n.main\n display: flex\n flex: 1\n\n// Sidebar (left) also covers the entire left portion of screen.\n.sidebar-drawer\n box-sizing: border-box\n\n border-right: 1px solid var(--color-sidebar-background-border)\n background: var(--color-sidebar-background)\n\n display: flex\n justify-content: flex-end\n // These next two lines took me two days to figure out.\n width: calc((100% - #{$full-width}) / 2 + #{$sidebar-width})\n min-width: $sidebar-width\n\n// Scroll-along sidebars\n.sidebar-container,\n.toc-drawer\n box-sizing: border-box\n width: $sidebar-width\n\n.toc-drawer\n background: var(--color-toc-background)\n // See HACK described on top of this document\n padding-right: 1rem\n\n.sidebar-sticky,\n.toc-sticky\n position: sticky\n top: 0\n height: min(100%, 100vh)\n height: 100vh\n\n display: flex\n flex-direction: column\n\n.sidebar-scroll,\n.toc-scroll\n flex-grow: 1\n flex-shrink: 1\n\n overflow: auto\n scroll-behavior: smooth\n\n// Central items.\n.content\n padding: 0 $content-padding\n width: $content-width\n\n display: flex\n flex-direction: column\n justify-content: space-between\n\n.icon\n display: inline-block\n height: 1rem\n width: 1rem\n svg\n width: 100%\n height: 100%\n\n//\n// Accommodate announcement banner\n//\n.announcement\n background-color: var(--color-announcement-background)\n color: var(--color-announcement-text)\n\n height: var(--header-height)\n display: flex\n align-items: center\n overflow-x: auto\n & + .page\n min-height: calc(100% - var(--header-height))\n\n.announcement-content\n box-sizing: border-box\n padding: 0.5rem\n min-width: 100%\n white-space: nowrap\n text-align: center\n\n a\n color: var(--color-announcement-text)\n text-decoration-color: var(--color-announcement-text)\n\n &:hover\n color: var(--color-announcement-text)\n text-decoration-color: var(--color-link--hover)\n\n////////////////////////////////////////////////////////////////////////////////\n// Toggles for theme\n////////////////////////////////////////////////////////////////////////////////\n.no-js .theme-toggle-container // don't show theme toggle if there's no JS\n display: none\n\n.theme-toggle-container\n display: flex\n\n.theme-toggle\n display: flex\n cursor: pointer\n border: none\n padding: 0\n background: transparent\n\n.theme-toggle svg\n height: 1.25rem\n width: 1.25rem\n color: var(--color-foreground-primary)\n display: none\n\n.theme-toggle-header\n display: flex\n align-items: center\n justify-content: center\n\n////////////////////////////////////////////////////////////////////////////////\n// Toggles for elements\n////////////////////////////////////////////////////////////////////////////////\n.toc-overlay-icon, .nav-overlay-icon\n display: none\n cursor: pointer\n\n .icon\n color: var(--color-foreground-secondary)\n height: 1.5rem\n width: 1.5rem\n\n.toc-header-icon, .nav-overlay-icon\n // for when we set display: flex\n justify-content: center\n align-items: center\n\n.toc-content-icon\n height: 1.5rem\n width: 1.5rem\n\n.content-icon-container\n float: right\n display: flex\n margin-top: 1.5rem\n margin-left: 1rem\n margin-bottom: 1rem\n gap: 0.5rem\n\n .edit-this-page, .view-this-page\n svg\n color: inherit\n height: 1.25rem\n width: 1.25rem\n\n.sidebar-toggle\n position: absolute\n display: none\n// \n.sidebar-toggle[name=\"__toc\"]\n left: 20px\n.sidebar-toggle:checked\n left: 40px\n// \n\n.overlay\n position: fixed\n top: 0\n width: 0\n height: 0\n\n transition: width 0ms, height 0ms, opacity 250ms ease-out\n\n opacity: 0\n background-color: rgba(0, 0, 0, 0.54)\n.sidebar-overlay\n z-index: 20\n.toc-overlay\n z-index: 40\n\n// Keep things on top and smooth.\n.sidebar-drawer\n z-index: 30\n transition: left 250ms ease-in-out\n.toc-drawer\n z-index: 50\n transition: right 250ms ease-in-out\n\n// Show the Sidebar\n#__navigation:checked\n & ~ .sidebar-overlay\n width: 100%\n height: 100%\n opacity: 1\n & ~ .page\n .sidebar-drawer\n top: 0\n left: 0\n // Show the toc sidebar\n#__toc:checked\n & ~ .toc-overlay\n width: 100%\n height: 100%\n opacity: 1\n & ~ .page\n .toc-drawer\n top: 0\n right: 0\n\n////////////////////////////////////////////////////////////////////////////////\n// Back to top\n////////////////////////////////////////////////////////////////////////////////\n.back-to-top\n text-decoration: none\n\n display: none\n position: fixed\n left: 0\n top: 1rem\n padding: 0.5rem\n padding-right: 0.75rem\n border-radius: 1rem\n font-size: 0.8125rem\n\n background: var(--color-background-primary)\n box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.05), #6b728080 0px 0px 1px 0px\n\n z-index: 10\n\n margin-left: 50%\n transform: translateX(-50%)\n svg\n height: 1rem\n width: 1rem\n fill: currentColor\n display: inline-block\n\n span\n margin-left: 0.25rem\n\n .show-back-to-top &\n display: flex\n align-items: center\n\n////////////////////////////////////////////////////////////////////////////////\n// Responsive layouting\n////////////////////////////////////////////////////////////////////////////////\n// Make things a bit bigger on bigger screens.\n@media (min-width: $full-width + $sidebar-width)\n html\n font-size: 110%\n\n@media (max-width: $full-width)\n // Collapse \"toc\" into the icon.\n .toc-content-icon\n display: flex\n .toc-drawer\n position: fixed\n height: 100vh\n top: 0\n right: -$sidebar-width\n border-left: 1px solid var(--color-background-muted)\n .toc-tree\n border-left: none\n font-size: var(--toc-font-size--mobile)\n\n // Accomodate for a changed content width.\n .sidebar-drawer\n width: calc((100% - #{$full-width - $sidebar-width}) / 2 + #{$sidebar-width})\n\n@media (max-width: $content-padded-width + $sidebar-width)\n // Center the page\n .content\n margin-left: auto\n margin-right: auto\n padding: 0 $content-padding--small\n\n@media (max-width: $content-padded-width--small + $sidebar-width)\n // Collapse \"navigation\".\n .nav-overlay-icon\n display: flex\n .sidebar-drawer\n position: fixed\n height: 100vh\n width: $sidebar-width\n\n top: 0\n left: -$sidebar-width\n\n // Swap which icon is visible.\n .toc-header-icon, .theme-toggle-header\n display: flex\n .toc-content-icon, .theme-toggle-content\n display: none\n\n // Show the header.\n .mobile-header\n position: sticky\n top: 0\n display: flex\n justify-content: space-between\n align-items: center\n\n .header-left,\n .header-right\n display: flex\n height: var(--header-height)\n padding: 0 var(--header-padding)\n label\n height: 100%\n width: 100%\n user-select: none\n\n .nav-overlay-icon .icon,\n .theme-toggle svg\n height: 1.5rem\n width: 1.5rem\n\n // Add a scroll margin for the content\n :target\n scroll-margin-top: calc(var(--header-height) + 2.5rem)\n\n // Show back-to-top below the header\n .back-to-top\n top: calc(var(--header-height) + 0.5rem)\n\n // Accommodate for the header.\n .page\n flex-direction: column\n justify-content: center\n\n@media (max-width: $content-width + 2* $content-padding--small)\n // Content should respect window limits.\n .content\n width: 100%\n overflow-x: auto\n\n@media (max-width: $content-width)\n article[role=main] aside.sidebar\n float: none\n width: 100%\n margin: 1rem 0\n","// Overall Layout Variables\n//\n// Because CSS variables can't be used in media queries. The fact that this\n// makes the layout non-user-configurable is a good thing.\n$content-padding: 3em;\n$content-padding--small: 1em;\n$content-width: 46em;\n$sidebar-width: 15em;\n$content-padded-width: $content-width + 2 * $content-padding;\n$content-padded-width--small: $content-width + 2 * $content-padding--small;\n$full-width: $content-padded-width + 2 * $sidebar-width;\n","//\n// The design here is strongly inspired by mkdocs-material.\n.admonition, .topic\n margin: 1rem auto\n padding: 0 0.5rem 0.5rem 0.5rem\n\n background: var(--color-admonition-background)\n\n border-radius: 0.2rem\n box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.05), 0 0 0.0625rem rgba(0, 0, 0, 0.1)\n\n font-size: var(--admonition-font-size)\n\n overflow: hidden\n page-break-inside: avoid\n\n // First element should have no margin, since the title has it.\n > :nth-child(2)\n margin-top: 0\n\n // Last item should have no margin, since we'll control that w/ padding\n > :last-child\n margin-bottom: 0\n\n.admonition p.admonition-title,\np.topic-title\n position: relative\n margin: 0 -0.5rem 0.5rem\n padding-left: 2rem\n padding-right: .5rem\n padding-top: .4rem\n padding-bottom: .4rem\n\n font-weight: 500\n font-size: var(--admonition-title-font-size)\n line-height: 1.3\n\n // Our fancy icon\n &::before\n content: \"\"\n position: absolute\n left: 0.5rem\n width: 1rem\n height: 1rem\n\n// Default styles\np.admonition-title\n background-color: var(--color-admonition-title-background)\n &::before\n background-color: var(--color-admonition-title)\n mask-image: var(--icon-admonition-default)\n mask-repeat: no-repeat\n\np.topic-title\n background-color: var(--color-topic-title-background)\n &::before\n background-color: var(--color-topic-title)\n mask-image: var(--icon-topic-default)\n mask-repeat: no-repeat\n\n//\n// Variants\n//\n.admonition\n border-left: 0.2rem solid var(--color-admonition-title)\n\n @each $type, $value in $admonitions\n &.#{$type}\n border-left-color: var(--color-admonition-title--#{$type})\n > .admonition-title\n background-color: var(--color-admonition-title-background--#{$type})\n &::before\n background-color: var(--color-admonition-title--#{$type})\n mask-image: var(--icon-#{nth($value, 2)})\n\n.admonition-todo > .admonition-title\n text-transform: uppercase\n","// This file stylizes the API documentation (stuff generated by autodoc). It's\n// deeply nested due to how autodoc structures the HTML without enough classes\n// to select the relevant items.\n\n// API docs!\ndl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)\n // Tweak the spacing of all the things!\n dd\n margin-left: 2rem\n > :first-child\n margin-top: 0.125rem\n > :last-child\n margin-bottom: 0.75rem\n\n // This is used for the arguments\n .field-list\n margin-bottom: 0.75rem\n\n // \"Headings\" (like \"Parameters\" and \"Return\")\n > dt\n text-transform: uppercase\n font-size: var(--font-size--small)\n\n dd:empty\n margin-bottom: 0.5rem\n dd > ul\n margin-left: -1.2rem\n > li\n > p:nth-child(2)\n margin-top: 0\n // When the last-empty-paragraph follows a paragraph, it doesn't need\n // to augument the existing spacing.\n > p + p:last-child:empty\n margin-top: 0\n margin-bottom: 0\n\n // Colorize the elements\n > dt\n color: var(--color-api-overall)\n\n.sig:not(.sig-inline)\n font-weight: bold\n\n font-size: var(--api-font-size)\n font-family: var(--font-stack--monospace)\n\n margin-left: -0.25rem\n margin-right: -0.25rem\n padding-top: 0.25rem\n padding-bottom: 0.25rem\n padding-right: 0.5rem\n\n // These are intentionally em, to properly match the font size.\n padding-left: 3em\n text-indent: -2.5em\n\n border-radius: 0.25rem\n\n background: var(--color-api-background)\n transition: background 100ms ease-out\n\n &:hover\n background: var(--color-api-background-hover)\n\n // adjust the size of the [source] link on the right.\n a.reference\n .viewcode-link\n font-weight: normal\n width: 4.25rem\n\nem.property\n font-style: normal\n &:first-child\n color: var(--color-api-keyword)\n.sig-name\n color: var(--color-api-name)\n.sig-prename\n font-weight: normal\n color: var(--color-api-pre-name)\n.sig-paren\n color: var(--color-api-paren)\n.sig-param\n font-style: normal\n\ndiv.versionadded,\ndiv.versionchanged,\ndiv.deprecated,\ndiv.versionremoved\n border-left: 0.1875rem solid\n border-radius: 0.125rem\n\n padding-left: 0.75rem\n\n p\n margin-top: 0.125rem\n margin-bottom: 0.125rem\n\ndiv.versionadded\n border-color: var(--color-api-added-border)\n .versionmodified\n color: var(--color-api-added)\n\ndiv.versionchanged\n border-color: var(--color-api-changed-border)\n .versionmodified\n color: var(--color-api-changed)\n\ndiv.deprecated\n border-color: var(--color-api-deprecated-border)\n .versionmodified\n color: var(--color-api-deprecated)\n\ndiv.versionremoved\n border-color: var(--color-api-removed-border)\n .versionmodified\n color: var(--color-api-removed)\n\n// Align the [docs] and [source] to the right.\n.viewcode-link, .viewcode-back\n float: right\n text-align: right\n",".line-block\n margin-top: 0.5rem\n margin-bottom: 0.75rem\n .line-block\n margin-top: 0rem\n margin-bottom: 0rem\n padding-left: 1rem\n","// Captions\narticle p.caption,\ntable > caption,\n.code-block-caption\n font-size: var(--font-size--small)\n text-align: center\n\n// Caption above a TOCTree\n.toctree-wrapper.compound\n .caption, :not(.caption) > .caption-text\n font-size: var(--font-size--small)\n text-transform: uppercase\n\n text-align: initial\n margin-bottom: 0\n\n > ul\n margin-top: 0\n margin-bottom: 0\n","// Inline code\ncode.literal, .sig-inline\n background: var(--color-inline-code-background)\n border-radius: 0.2em\n // Make the font smaller, and use padding to recover.\n font-size: var(--font-size--small--2)\n padding: 0.1em 0.2em\n\n pre.literal-block &\n font-size: inherit\n padding: 0\n\n p &\n border: 1px solid var(--color-background-border)\n\n.sig-inline\n font-family: var(--font-stack--monospace)\n\n// Code and Literal Blocks\n$code-spacing-vertical: 0.625rem\n$code-spacing-horizontal: 0.875rem\n\n// Wraps every literal block + line numbers.\ndiv[class*=\" highlight-\"],\ndiv[class^=\"highlight-\"]\n margin: 1em 0\n display: flex\n\n .table-wrapper\n margin: 0\n padding: 0\n\npre\n margin: 0\n padding: 0\n overflow: auto\n\n // Needed to have more specificity than pygments' \"pre\" selector. :(\n article[role=\"main\"] .highlight &\n line-height: 1.5\n\n &.literal-block,\n .highlight &\n font-size: var(--code-font-size)\n padding: $code-spacing-vertical $code-spacing-horizontal\n\n // Make it look like all the other blocks.\n &.literal-block\n margin-top: 1rem\n margin-bottom: 1rem\n\n border-radius: 0.2rem\n background-color: var(--color-code-background)\n color: var(--color-code-foreground)\n\n// All code is always contained in this.\n.highlight\n width: 100%\n border-radius: 0.2rem\n\n // Make line numbers and prompts un-selectable.\n .gp, span.linenos\n user-select: none\n pointer-events: none\n\n // Expand the line-highlighting.\n .hll\n display: block\n margin-left: -$code-spacing-horizontal\n margin-right: -$code-spacing-horizontal\n padding-left: $code-spacing-horizontal\n padding-right: $code-spacing-horizontal\n\n/* Make code block captions be nicely integrated */\n.code-block-caption\n display: flex\n padding: $code-spacing-vertical $code-spacing-horizontal\n\n border-radius: 0.25rem\n border-bottom-left-radius: 0\n border-bottom-right-radius: 0\n font-weight: 300\n border-bottom: 1px solid\n\n background-color: var(--color-code-background)\n color: var(--color-code-foreground)\n border-color: var(--color-background-border)\n\n + div[class]\n margin-top: 0\n pre\n border-top-left-radius: 0\n border-top-right-radius: 0\n\n// When `html_codeblock_linenos_style` is table.\n.highlighttable\n width: 100%\n display: block\n tbody\n display: block\n\n tr\n display: flex\n\n // Line numbers\n td.linenos\n background-color: var(--color-code-background)\n color: var(--color-code-foreground)\n padding: $code-spacing-vertical $code-spacing-horizontal\n padding-right: 0\n border-top-left-radius: 0.2rem\n border-bottom-left-radius: 0.2rem\n\n .linenodiv\n padding-right: $code-spacing-horizontal\n font-size: var(--code-font-size)\n box-shadow: -0.0625rem 0 var(--color-foreground-border) inset\n\n // Actual code\n td.code\n padding: 0\n display: block\n flex: 1\n overflow: hidden\n\n .highlight\n border-top-left-radius: 0\n border-bottom-left-radius: 0\n\n// When `html_codeblock_linenos_style` is inline.\n.highlight\n span.linenos\n display: inline-block\n padding-left: 0\n padding-right: $code-spacing-horizontal\n margin-right: $code-spacing-horizontal\n box-shadow: -0.0625rem 0 var(--color-foreground-border) inset\n","// Inline Footnote Reference\n.footnote-reference\n font-size: var(--font-size--small--4)\n vertical-align: super\n\n// Definition list, listing the content of each note.\n// docutils <= 0.17\ndl.footnote.brackets\n font-size: var(--font-size--small)\n color: var(--color-foreground-secondary)\n\n display: grid\n grid-template-columns: max-content auto\n dt\n margin: 0\n > .fn-backref\n margin-left: 0.25rem\n\n &:after\n content: \":\"\n\n .brackets\n &:before\n content: \"[\"\n &:after\n content: \"]\"\n\n dd\n margin: 0\n padding: 0 1rem\n\n// docutils >= 0.18\naside.footnote\n font-size: var(--font-size--small)\n color: var(--color-foreground-secondary)\n\naside.footnote > span,\ndiv.citation > span\n float: left\n font-weight: 500\n padding-right: 0.25rem\n\naside.footnote > *:not(span),\ndiv.citation > p\n margin-left: 2rem\n","//\n// Figures\n//\nimg\n box-sizing: border-box\n max-width: 100%\n height: auto\n\narticle\n figure, .figure\n border-radius: 0.2rem\n\n margin: 0\n :last-child\n margin-bottom: 0\n\n .align-left\n float: left\n clear: left\n margin: 0 1rem 1rem\n\n .align-right\n float: right\n clear: right\n margin: 0 1rem 1rem\n\n .align-default,\n .align-center\n display: block\n text-align: center\n margin-left: auto\n margin-right: auto\n\n // WELL, table needs to be stylised like a table.\n table.align-default\n display: table\n text-align: initial\n",".genindex-jumpbox, .domainindex-jumpbox\n border-top: 1px solid var(--color-background-border)\n border-bottom: 1px solid var(--color-background-border)\n padding: 0.25rem\n\n.genindex-section, .domainindex-section\n h2\n margin-top: 0.75rem\n margin-bottom: 0.5rem\n ul\n margin-top: 0\n margin-bottom: 0\n","ul,\nol\n padding-left: 1.2rem\n\n // Space lists out like paragraphs\n margin-top: 1rem\n margin-bottom: 1rem\n // reduce margins within li.\n li\n > p:first-child\n margin-top: 0.25rem\n margin-bottom: 0.25rem\n\n > p:last-child\n margin-top: 0.25rem\n\n > ul,\n > ol\n margin-top: 0.5rem\n margin-bottom: 0.5rem\n\nol\n &.arabic\n list-style: decimal\n &.loweralpha\n list-style: lower-alpha\n &.upperalpha\n list-style: upper-alpha\n &.lowerroman\n list-style: lower-roman\n &.upperroman\n list-style: upper-roman\n\n// Don't space lists out when they're \"simple\" or in a `.. toctree::`\n.simple,\n.toctree-wrapper\n li\n > ul,\n > ol\n margin-top: 0\n margin-bottom: 0\n\n// Definition Lists\n.field-list,\n.option-list,\ndl:not([class]),\ndl.simple,\ndl.footnote,\ndl.glossary\n dt\n font-weight: 500\n margin-top: 0.25rem\n + dt\n margin-top: 0\n\n .classifier::before\n content: \":\"\n margin-left: 0.2rem\n margin-right: 0.2rem\n\n dd\n > p:first-child,\n ul\n margin-top: 0.125rem\n\n ul\n margin-bottom: 0.125rem\n",".math-wrapper\n width: 100%\n overflow-x: auto\n\ndiv.math\n position: relative\n text-align: center\n\n .headerlink,\n &:focus .headerlink\n display: none\n\n &:hover .headerlink\n display: inline-block\n\n span.eqno\n position: absolute\n right: 0.5rem\n top: 50%\n transform: translate(0, -50%)\n z-index: 1\n","// Abbreviations\nabbr[title]\n cursor: help\n\n// \"Problematic\" content, as identified by Sphinx\n.problematic\n color: var(--color-problematic)\n\n// Keyboard / Mouse \"instructions\"\nkbd:not(.compound)\n margin: 0 0.2rem\n padding: 0 0.2rem\n border-radius: 0.2rem\n border: 1px solid var(--color-foreground-border)\n color: var(--color-foreground-primary)\n vertical-align: text-bottom\n\n font-size: var(--font-size--small--3)\n display: inline-block\n\n box-shadow: 0 0.0625rem 0 rgba(0, 0, 0, 0.2), inset 0 0 0 0.125rem var(--color-background-primary)\n\n background-color: var(--color-background-secondary)\n\n// Blockquote\nblockquote\n border-left: 4px solid var(--color-background-border)\n background: var(--color-background-secondary)\n\n margin-left: 0\n margin-right: 0\n padding: 0.5rem 1rem\n\n .attribution\n font-weight: 600\n text-align: right\n\n &.pull-quote,\n &.highlights\n font-size: 1.25em\n\n &.epigraph,\n &.pull-quote\n border-left-width: 0\n border-radius: 0.5rem\n\n &.highlights\n border-left-width: 0\n background: transparent\n\n// Center align embedded-in-text images\np .reference img\n vertical-align: middle\n","p.rubric\n line-height: 1.25\n font-weight: bold\n font-size: 1.125em\n\n // For Numpy-style documentation that's got rubrics within it.\n // https://github.com/pradyunsg/furo/discussions/505\n dd &\n line-height: inherit\n font-weight: inherit\n\n font-size: var(--font-size--small)\n text-transform: uppercase\n","article .sidebar\n float: right\n clear: right\n width: 30%\n\n margin-left: 1rem\n margin-right: 0\n\n border-radius: 0.2rem\n background-color: var(--color-background-secondary)\n border: var(--color-background-border) 1px solid\n\n > *\n padding-left: 1rem\n padding-right: 1rem\n\n > ul, > ol // lists need additional padding, because bullets.\n padding-left: 2.2rem\n\n .sidebar-title\n margin: 0\n padding: 0.5rem 1rem\n border-bottom: var(--color-background-border) 1px solid\n\n font-weight: 500\n\n// TODO: subtitle\n// TODO: dedicated variables?\n","[role=main] .table-wrapper.container\n width: 100%\n overflow-x: auto\n margin-top: 1rem\n margin-bottom: 0.5rem\n padding: 0.2rem 0.2rem 0.75rem\n\ntable.docutils\n border-radius: 0.2rem\n border-spacing: 0\n border-collapse: collapse\n\n box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.05), 0 0 0.0625rem rgba(0, 0, 0, 0.1)\n\n th\n background: var(--color-table-header-background)\n\n td,\n th\n // Space things out properly\n padding: 0 0.25rem\n\n // Get the borders looking just-right.\n border-left: 1px solid var(--color-table-border)\n border-right: 1px solid var(--color-table-border)\n border-bottom: 1px solid var(--color-table-border)\n\n p\n margin: 0.25rem\n\n &:first-child\n border-left: none\n &:last-child\n border-right: none\n\n // MyST-parser tables set these classes for control of column alignment\n &.text-left\n text-align: left\n &.text-right\n text-align: right\n &.text-center\n text-align: center\n",":target\n scroll-margin-top: 2.5rem\n\n@media (max-width: $full-width - $sidebar-width)\n :target\n scroll-margin-top: calc(2.5rem + var(--header-height))\n\n // When a heading is selected\n section > span:target\n scroll-margin-top: calc(2.8rem + var(--header-height))\n\n// Permalinks\n.headerlink\n font-weight: 100\n user-select: none\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\ndl dt,\np.caption,\nfigcaption p,\ntable > caption,\n.code-block-caption\n > .headerlink\n margin-left: 0.5rem\n visibility: hidden\n &:hover > .headerlink\n visibility: visible\n\n // Don't change to link-like, if someone adds the contents directive.\n > .toc-backref\n color: inherit\n text-decoration-line: none\n\n// Figure and table captions are special.\nfigure:hover > figcaption > p > .headerlink,\ntable:hover > caption > .headerlink\n visibility: visible\n\n:target >, // Regular section[id] style anchors\nspan:target ~ // Non-regular span[id] style \"extra\" anchors\n h1,\n h2,\n h3,\n h4,\n h5,\n h6\n &:nth-of-type(1)\n background-color: var(--color-highlight-on-target)\n // .headerlink\n // visibility: visible\n code.literal\n background-color: transparent\n\ntable:target > caption,\nfigure:target\n background-color: var(--color-highlight-on-target)\n\n// Inline page contents\n.this-will-duplicate-information-and-it-is-still-useful-here li :target\n background-color: var(--color-highlight-on-target)\n\n// Code block permalinks\n.literal-block-wrapper:target .code-block-caption\n background-color: var(--color-highlight-on-target)\n\n// When a definition list item is selected\n//\n// There isn't really an alternative to !important here, due to the\n// high-specificity of API documentation's selector.\ndt:target\n background-color: var(--color-highlight-on-target) !important\n\n// When a footnote reference is selected\n.footnote > dt:target + dd,\n.footnote-reference:target\n background-color: var(--color-highlight-on-target)\n",".guilabel\n background-color: var(--color-guilabel-background)\n border: 1px solid var(--color-guilabel-border)\n color: var(--color-guilabel-text)\n\n padding: 0 0.3em\n border-radius: 0.5em\n font-size: 0.9em\n","// This file contains the styles used for stylizing the footer that's shown\n// below the content.\n\nfooter\n font-size: var(--font-size--small)\n display: flex\n flex-direction: column\n\n margin-top: 2rem\n\n// Bottom of page information\n.bottom-of-page\n display: flex\n align-items: center\n justify-content: space-between\n\n margin-top: 1rem\n padding-top: 1rem\n padding-bottom: 1rem\n\n color: var(--color-foreground-secondary)\n border-top: 1px solid var(--color-background-border)\n\n line-height: 1.5\n\n @media (max-width: $content-width)\n text-align: center\n flex-direction: column-reverse\n gap: 0.25rem\n\n .left-details\n font-size: var(--font-size--small)\n\n .right-details\n display: flex\n flex-direction: column\n gap: 0.25rem\n text-align: right\n\n .icons\n display: flex\n justify-content: flex-end\n gap: 0.25rem\n font-size: 1rem\n\n a\n text-decoration: none\n\n svg,\n img\n font-size: 1.125rem\n height: 1em\n width: 1em\n\n// Next/Prev page information\n.related-pages\n a\n display: flex\n align-items: center\n\n text-decoration: none\n &:hover .page-info .title\n text-decoration: underline\n color: var(--color-link)\n text-decoration-color: var(--color-link-underline)\n\n svg.furo-related-icon,\n svg.furo-related-icon > use\n flex-shrink: 0\n\n color: var(--color-foreground-border)\n\n width: 0.75rem\n height: 0.75rem\n margin: 0 0.5rem\n\n &.next-page\n max-width: 50%\n\n float: right\n clear: right\n text-align: right\n\n &.prev-page\n max-width: 50%\n\n float: left\n clear: left\n\n svg\n transform: rotate(180deg)\n\n.page-info\n display: flex\n flex-direction: column\n overflow-wrap: anywhere\n\n .next-page &\n align-items: flex-end\n\n .context\n display: flex\n align-items: center\n\n padding-bottom: 0.1rem\n\n color: var(--color-foreground-muted)\n font-size: var(--font-size--small)\n text-decoration: none\n","// This file contains the styles for the contents of the left sidebar, which\n// contains the navigation tree, logo, search etc.\n\n////////////////////////////////////////////////////////////////////////////////\n// Brand on top of the scrollable tree.\n////////////////////////////////////////////////////////////////////////////////\n.sidebar-brand\n display: flex\n flex-direction: column\n flex-shrink: 0\n\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal)\n text-decoration: none\n\n.sidebar-brand-text\n color: var(--color-sidebar-brand-text)\n overflow-wrap: break-word\n margin: var(--sidebar-item-spacing-vertical) 0\n font-size: 1.5rem\n\n.sidebar-logo-container\n margin: var(--sidebar-item-spacing-vertical) 0\n\n.sidebar-logo\n margin: 0 auto\n display: block\n max-width: 100%\n\n////////////////////////////////////////////////////////////////////////////////\n// Search\n////////////////////////////////////////////////////////////////////////////////\n.sidebar-search-container\n display: flex\n align-items: center\n margin-top: var(--sidebar-search-space-above)\n\n position: relative\n\n background: var(--color-sidebar-search-background)\n &:hover,\n &:focus-within\n background: var(--color-sidebar-search-background--focus)\n\n &::before\n content: \"\"\n position: absolute\n left: var(--sidebar-item-spacing-horizontal)\n width: var(--sidebar-search-icon-size)\n height: var(--sidebar-search-icon-size)\n\n background-color: var(--color-sidebar-search-icon)\n mask-image: var(--icon-search)\n\n.sidebar-search\n box-sizing: border-box\n\n border: none\n border-top: 1px solid var(--color-sidebar-search-border)\n border-bottom: 1px solid var(--color-sidebar-search-border)\n\n padding-top: var(--sidebar-search-input-spacing-vertical)\n padding-bottom: var(--sidebar-search-input-spacing-vertical)\n padding-right: var(--sidebar-search-input-spacing-horizontal)\n padding-left: calc(var(--sidebar-item-spacing-horizontal) + var(--sidebar-search-input-spacing-horizontal) + var(--sidebar-search-icon-size))\n\n width: 100%\n\n color: var(--color-sidebar-search-foreground)\n background: transparent\n z-index: 10\n\n &:focus\n outline: none\n\n &::placeholder\n font-size: var(--sidebar-search-input-font-size)\n\n//\n// Hide Search Matches link\n//\n#searchbox .highlight-link\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal) 0\n margin: 0\n text-align: center\n\n a\n color: var(--color-sidebar-search-icon)\n font-size: var(--font-size--small--2)\n\n////////////////////////////////////////////////////////////////////////////////\n// Structure/Skeleton of the navigation tree (left)\n////////////////////////////////////////////////////////////////////////////////\n.sidebar-tree\n font-size: var(--sidebar-item-font-size)\n margin-top: var(--sidebar-tree-space-above)\n margin-bottom: var(--sidebar-item-spacing-vertical)\n\n ul\n padding: 0\n margin-top: 0\n margin-bottom: 0\n\n display: flex\n flex-direction: column\n\n list-style: none\n\n li\n position: relative\n margin: 0\n\n > ul\n margin-left: var(--sidebar-item-spacing-horizontal)\n\n .icon\n color: var(--color-sidebar-link-text)\n\n .reference\n box-sizing: border-box\n color: var(--color-sidebar-link-text)\n\n // Fill the parent.\n display: inline-block\n line-height: var(--sidebar-item-line-height)\n text-decoration: none\n\n // Don't allow long words to cause wrapping.\n overflow-wrap: anywhere\n\n height: 100%\n width: 100%\n\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal)\n\n &:hover\n color: var(--color-sidebar-link-text)\n background: var(--color-sidebar-item-background--hover)\n\n // Add a nice little \"external-link\" arrow here.\n &.external::after\n content: url('data:image/svg+xml,')\n margin: 0 0.25rem\n vertical-align: middle\n color: var(--color-sidebar-link-text)\n\n // Make the current page reference bold.\n .current-page > .reference\n font-weight: bold\n\n label\n position: absolute\n top: 0\n right: 0\n height: var(--sidebar-item-height)\n width: var(--sidebar-expander-width)\n\n cursor: pointer\n user-select: none\n\n display: flex\n justify-content: center\n align-items: center\n\n .caption, :not(.caption) > .caption-text\n font-size: var(--sidebar-caption-font-size)\n color: var(--color-sidebar-caption-text)\n\n font-weight: bold\n text-transform: uppercase\n\n margin: var(--sidebar-caption-space-above) 0 0 0\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal)\n\n // If it has children, add a bit more padding to wrap the content to avoid\n // overlapping with the