------- Comment #10 from dfranke at gcc dot gnu dot org  2010-05-06 10:00 
-------
(In reply to comment #9)
> It looks like cubic time in N. 

http://en.wikipedia.org/wiki/Matrix_multiplication#Algorithms_for_efficient_matrix_multiplication:

"The running time of square matrix multiplication, if carried out naively, is
O(n^3). The running time for multiplying rectangular matrices (one m x p-matrix
with one p x n-matrix) is O(mnp)"

Better algorithms than the one implemented exist.


> > unconditionally returning NULL in MATMUL: ...
> 
> I cannot reproduce that, am I correct to understand that you used some patched
> gfortran?

Index: simplify.c
===================================================================
--- simplify.c  (revision 159089)
+++ simplify.c  (working copy)
@@ -3294,6 +3294,8 @@ gfc_simplify_matmul (gfc_expr *matrix_a,
   int row, result_rows, col, result_columns;
   int stride_a, offset_a, stride_b, offset_b;

+  return NULL;
+
   if (!is_constant_array_expr (matrix_a)
       || !is_constant_array_expr (matrix_b))
     return NULL;


> Apparently, all the intrinsics should be audited for this kind of problem.

Transformational intrinsics that return an arrays, to begin with.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43996

Reply via email to