11/**
2- * Copyright (C) Mellanox Technologies Ltd. 2020-2021 . ALL RIGHTS RESERVED.
2+ * Copyright (C) Mellanox Technologies Ltd. 2020-2022 . ALL RIGHTS RESERVED.
33 *
44 * See file LICENSE for terms.
55 */
@@ -189,16 +189,50 @@ static ucc_status_t ucc_mc_cpu_reduce_multi(const void *src1, const void *src2,
189189 return ucc_mc_cpu_reduce_multi_uint64 (src1 , src2 , dst , n_vectors ,
190190 count , stride , op );
191191 case UCC_DT_FLOAT32 :
192- ucc_assert (4 == sizeof (float ));
193- return ucc_mc_cpu_reduce_multi_float (src1 , src2 , dst , n_vectors ,
194- count , stride , op );
192+ #if SIZEOF_FLOAT == 4
193+ return ucc_mc_cpu_reduce_multi_float (src1 , src2 , dst , n_vectors , count ,
194+ stride , op );
195+ #else
196+ return UCC_ERR_NOT_SUPPORTED ;
197+ #endif
195198 case UCC_DT_FLOAT64 :
196- ucc_assert ( 8 == sizeof ( double ));
199+ #if SIZEOF_DOUBLE == 8
197200 return ucc_mc_cpu_reduce_multi_double (src1 , src2 , dst , n_vectors ,
198201 count , stride , op );
202+ #else
203+ return UCC_ERR_NOT_SUPPORTED ;
204+ #endif
205+ case UCC_DT_FLOAT128 :
206+ #if SIZEOF_LONG_DOUBLE == 16
207+ return ucc_mc_cpu_reduce_multi_long_double (src1 , src2 , dst , n_vectors ,
208+ count , stride , op );
209+ #else
210+ return UCC_ERR_NOT_SUPPORTED ;
211+ #endif
199212 case UCC_DT_BFLOAT16 :
200213 return ucc_mc_cpu_reduce_multi_bfloat16 (src1 , src2 , dst , n_vectors ,
201214 count , stride , op );
215+ case UCC_DT_FLOAT32_COMPLEX :
216+ #if SIZEOF_FLOAT__COMPLEX == 8
217+ return ucc_mc_cpu_reduce_multi_float_complex (src1 , src2 , dst , n_vectors ,
218+ count , stride , op );
219+ #else
220+ return UCC_ERR_NOT_SUPPORTED ;
221+ #endif
222+ case UCC_DT_FLOAT64_COMPLEX :
223+ #if SIZEOF_DOUBLE__COMPLEX == 16
224+ return ucc_mc_cpu_reduce_multi_double_complex (
225+ src1 , src2 , dst , n_vectors , count , stride , op );
226+ #else
227+ return UCC_ERR_NOT_SUPPORTED ;
228+ #endif
229+ case UCC_DT_FLOAT128_COMPLEX :
230+ #if SIZEOF_LONG_DOUBLE__COMPLEX == 32
231+ return ucc_mc_cpu_reduce_multi_long_double_complex (
232+ src1 , src2 , dst , n_vectors , count , stride , op );
233+ #else
234+ return UCC_ERR_NOT_SUPPORTED ;
235+ #endif
202236 default :
203237 mc_error (& ucc_mc_cpu .super , "unsupported reduction type (%s)" ,
204238 ucc_datatype_str (dt ));
@@ -222,19 +256,57 @@ ucc_mc_cpu_reduce_multi_alpha(const void *src1, const void *src2, void *dst,
222256{
223257 switch (dt ) {
224258 case UCC_DT_FLOAT32 :
225- ucc_assert ( 4 == sizeof ( float ));
259+ #if SIZEOF_FLOAT == 4
226260 return ucc_mc_cpu_reduce_multi_alpha_float (src1 , src2 , dst , n_vectors ,
227261 count , stride , reduce_op ,
228262 vector_op , (float )alpha );
263+ #else
264+ return UCC_ERR_NOT_SUPPORTED ;
265+ #endif
229266 case UCC_DT_FLOAT64 :
230- ucc_assert ( 8 == sizeof ( double ));
267+ #if SIZEOF_DOUBLE == 8
231268 return ucc_mc_cpu_reduce_multi_alpha_double (src1 , src2 , dst , n_vectors ,
232269 count , stride , reduce_op ,
233270 vector_op , alpha );
271+ #else
272+ return UCC_ERR_NOT_SUPPORTED ;
273+ #endif
274+ case UCC_DT_FLOAT128 :
275+ #if SIZEOF_LONG_DOUBLE == 16
276+ return ucc_mc_cpu_reduce_multi_alpha_long (
277+ src1 , src2 , dst , n_vectors , count , stride , reduce_op , vector_op ,
278+ (long double )alpha );
279+ #else
280+ return UCC_ERR_NOT_SUPPORTED ;
281+ #endif
234282 case UCC_DT_BFLOAT16 :
235283 return ucc_mc_cpu_reduce_multi_alpha_bfloat16 (src1 , src2 , dst , n_vectors ,
236284 count , stride , reduce_op ,
237285 vector_op , (float )alpha );
286+ case UCC_DT_FLOAT32_COMPLEX :
287+ #if SIZEOF_FLOAT__COMPLEX == 8
288+ return ucc_mc_cpu_reduce_multi_alpha_float_complex (
289+ src1 , src2 , dst , n_vectors , count , stride , reduce_op , vector_op ,
290+ (float )alpha );
291+ #else
292+ return UCC_ERR_NOT_SUPPORTED ;
293+ #endif
294+ case UCC_DT_FLOAT64_COMPLEX :
295+ #if SIZEOF_DOUBLE__COMPLEX == 16
296+ return ucc_mc_cpu_reduce_multi_alpha_double_complex (
297+ src1 , src2 , dst , n_vectors , count , stride , reduce_op , vector_op ,
298+ (double )alpha );
299+ #else
300+ return UCC_ERR_NOT_SUPPORTED ;
301+ #endif
302+ case UCC_DT_FLOAT128_COMPLEX :
303+ #if SIZEOF_LONG_DOUBLE__COMPLEX == 32
304+ return ucc_mc_cpu_reduce_multi_alpha_long_complex (
305+ src1 , src2 , dst , n_vectors , count , stride , reduce_op , vector_op ,
306+ (long double )alpha );
307+ #else
308+ return UCC_ERR_NOT_SUPPORTED ;
309+ #endif
238310 default :
239311 mc_error (& ucc_mc_cpu .super , "unsupported reduction type (%s)" ,
240312 ucc_datatype_str (dt ));
0 commit comments