From 0f9b53e84b48d8d73a56cc9889eae3595ca58a78 Mon Sep 17 00:00:00 2001 From: "Field G. Van Zee" Date: Tue, 13 Nov 2018 13:03:15 -0600 Subject: [PATCH] Fixed a bug in high-level mixeddt conditional. Details: - Fixed a bug in frame/3/bli_l3_oapi.c in the conditional that divides use of induced method (1m) execution from native execution. The former was intended to only be used in cases where all storage datatypes are complex and the datatype of C is equal to the computation datatype. (If mixed datatypes are detected, native execution would be used.) However, the code in bli_gemm() was erroneously checking the execution datatype instead of the computation datatype, which at that point is guaranteed to be equal to the storage datatype even if the computation datatype contains a different value. Thanks to Devangi Parikh for helping in isolating this bug. --- frame/3/bli_l3_oapi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frame/3/bli_l3_oapi.c b/frame/3/bli_l3_oapi.c index 701428a59..0340cf566 100644 --- a/frame/3/bli_l3_oapi.c +++ b/frame/3/bli_l3_oapi.c @@ -64,7 +64,7 @@ void PASTEMAC(opname,EX_SUF) \ where mixed datatype support will be implemented (if at all). */ \ if ( bli_obj_dt( c ) == bli_obj_dt( a ) && \ bli_obj_dt( c ) == bli_obj_dt( b ) && \ - bli_obj_dt( c ) == bli_obj_exec_dt( c ) && \ + bli_obj_dt( c ) == bli_obj_comp_dt( c ) && \ bli_obj_is_complex( c ) ) \ { \ /* Invoke the operation's "ind" function--its induced method front-end.