@@ -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+ )
72147set (_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+ )
98177set (_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
131210target_link_libraries (${python_module_name} PRIVATE ${_static_lib_trgt} )
132211list (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+
134219set (python_module_name _tensor_reductions_impl)
135220pybind11_add_module (${python_module_name} MODULE ${_tensor_reductions_impl_sources} )
136221add_sycl_to_target (TARGET ${python_module_name} SOURCES ${_tensor_reductions_impl_sources} )
@@ -157,7 +242,7 @@ set(_no_fast_math_sources
157242)
158243list (
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
176261set (_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+
178276set (_linker_options "LINKER:${DPNP_LDFLAGS} " )
179277foreach (python_module_name ${_py_trgts} )
180278 target_compile_options (
0 commit comments