Skip to content

Commit 2ef9a94

Browse files
Move _tensor_elementwise_impl (unary) extension and use it for dpnp (#2795)
This PR initializes `_tensor_elementwise_impl ` pybind11 extension in `dpctl_ext.tensor` and extends `dpctl_ext.tensor ` Python API with the part of unary functions : `abs, acos , acosh, angle. atan, atanh, bitwise_invert. ceil, conj` This is the first part of the work on migrating `_tensor_elementwise_impl` (unary)_
1 parent 0f6d63e commit 2ef9a94

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+6353
-23
lines changed

dpctl_ext/tensor/CMakeLists.txt

Lines changed: 99 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,81 @@ set(_accumulator_sources
6969
${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/accumulators/cumulative_prod.cpp
7070
${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/accumulators/cumulative_sum.cpp
7171
)
72+
set(_elementwise_sources
73+
${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/elementwise_common.cpp
74+
${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/elementwise_functions_type_utils.cpp
75+
${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/abs.cpp
76+
${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/acos.cpp
77+
${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/acosh.cpp
78+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/add.cpp
79+
${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/angle.cpp
80+
${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/asin.cpp
81+
${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/asinh.cpp
82+
${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/atan.cpp
83+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/atan2.cpp
84+
${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/atanh.cpp
85+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/bitwise_and.cpp
86+
${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/bitwise_invert.cpp
87+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/bitwise_left_shift.cpp
88+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/bitwise_or.cpp
89+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/bitwise_right_shift.cpp
90+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/bitwise_xor.cpp
91+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/cbrt.cpp
92+
${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/ceil.cpp
93+
${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/conj.cpp
94+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/copysign.cpp
95+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/cos.cpp
96+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/cosh.cpp
97+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/equal.cpp
98+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/exp.cpp
99+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/exp2.cpp
100+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/expm1.cpp
101+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/floor_divide.cpp
102+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/floor.cpp
103+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/greater_equal.cpp
104+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/greater.cpp
105+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/hypot.cpp
106+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/imag.cpp
107+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/isfinite.cpp
108+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/isinf.cpp
109+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/isnan.cpp
110+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/less_equal.cpp
111+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/less.cpp
112+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/log.cpp
113+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/log1p.cpp
114+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/log2.cpp
115+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/log10.cpp
116+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/logaddexp.cpp
117+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/logical_and.cpp
118+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/logical_not.cpp
119+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/logical_or.cpp
120+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/logical_xor.cpp
121+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/maximum.cpp
122+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/minimum.cpp
123+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/multiply.cpp
124+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/negative.cpp
125+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/nextafter.cpp
126+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/not_equal.cpp
127+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/positive.cpp
128+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/pow.cpp
129+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/proj.cpp
130+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/real.cpp
131+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/reciprocal.cpp
132+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/remainder.cpp
133+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/round.cpp
134+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/rsqrt.cpp
135+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/sign.cpp
136+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/signbit.cpp
137+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/sin.cpp
138+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/sinh.cpp
139+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/sqrt.cpp
140+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/square.cpp
141+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/subtract.cpp
142+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/tan.cpp
143+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/tanh.cpp
144+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/true_divide.cpp
145+
#${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/elementwise_functions/trunc.cpp
146+
)
72147
set(_reduction_sources
73148
${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/reductions/reduction_common.cpp
74149
${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/reductions/all.cpp
@@ -95,6 +170,10 @@ set(_tensor_accumulation_impl_sources
95170
${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/tensor_accumulation.cpp
96171
${_accumulator_sources}
97172
)
173+
set(_tensor_elementwise_impl_sources
174+
${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/tensor_elementwise.cpp
175+
${_elementwise_sources}
176+
)
98177
set(_tensor_reductions_impl_sources
99178
${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/tensor_reductions.cpp
100179
${_reduction_sources}
@@ -131,6 +210,12 @@ add_sycl_to_target(TARGET ${python_module_name} SOURCES ${_tensor_accumulation_i
131210
target_link_libraries(${python_module_name} PRIVATE ${_static_lib_trgt})
132211
list(APPEND _py_trgts ${python_module_name})
133212

213+
set(python_module_name _tensor_elementwise_impl)
214+
pybind11_add_module(${python_module_name} MODULE ${_tensor_elementwise_impl_sources})
215+
add_sycl_to_target(TARGET ${python_module_name} SOURCES ${_tensor_elementwise_impl_sources})
216+
target_link_libraries(${python_module_name} PRIVATE ${_static_lib_trgt})
217+
list(APPEND _py_trgts ${python_module_name})
218+
134219
set(python_module_name _tensor_reductions_impl)
135220
pybind11_add_module(${python_module_name} MODULE ${_tensor_reductions_impl_sources})
136221
add_sycl_to_target(TARGET ${python_module_name} SOURCES ${_tensor_reductions_impl_sources})
@@ -157,7 +242,7 @@ set(_no_fast_math_sources
157242
)
158243
list(
159244
APPEND _no_fast_math_sources
160-
# ${_elementwise_sources}
245+
${_elementwise_sources}
161246
${_reduction_sources}
162247
${_sorting_sources}
163248
# ${_linalg_sources}
@@ -175,6 +260,19 @@ endforeach()
175260

176261
set(_compiler_definitions "")
177262

263+
foreach(_src_fn ${_elementwise_sources})
264+
get_source_file_property(_cmpl_options_defs ${_src_fn} COMPILE_DEFINITIONS)
265+
if(${_cmpl_options_defs})
266+
set(_combined_options_defs ${_cmpl_options_defs} "${_compiler_definitions}")
267+
else()
268+
set(_combined_options_defs "${_compiler_definitions}")
269+
endif()
270+
set_source_files_properties(
271+
${_src_fn}
272+
PROPERTIES COMPILE_DEFINITIONS "${_combined_options_defs}"
273+
)
274+
endforeach()
275+
178276
set(_linker_options "LINKER:${DPNP_LDFLAGS}")
179277
foreach(python_module_name ${_py_trgts})
180278
target_compile_options(

dpctl_ext/tensor/__init__.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,19 @@
5353
zeros,
5454
zeros_like,
5555
)
56+
from ._elementwise_funcs import (
57+
abs,
58+
acos,
59+
acosh,
60+
angle,
61+
asin,
62+
asinh,
63+
atan,
64+
atanh,
65+
bitwise_invert,
66+
ceil,
67+
conj,
68+
)
5669
from ._indexing_functions import (
5770
extract,
5871
nonzero,
@@ -104,19 +117,30 @@
104117
from ._utility_functions import all, any, diff
105118

106119
__all__ = [
120+
"abs",
121+
"acos",
122+
"acosh",
107123
"all",
124+
"angle",
108125
"any",
109126
"arange",
110127
"argmax",
111128
"argmin",
112129
"argsort",
113130
"asarray",
131+
"asin",
132+
"asinh",
114133
"asnumpy",
115134
"astype",
135+
"atan",
136+
"atanh",
137+
"bitwise_invert",
116138
"broadcast_arrays",
117139
"broadcast_to",
118140
"can_cast",
141+
"ceil",
119142
"concat",
143+
"conj",
120144
"copy",
121145
"count_nonzero",
122146
"clip",

0 commit comments

Comments
 (0)